ページ 11

OpenCVでのカメラ映像での輪郭所得に関して

Posted: 2013年11月10日(日) 10:24
by Arare
カメラから所得したフレームを二値化して、画像の黒いラインを青色にしようと思っているのですが

cvDrawContours(frame, Contour->v_next,ContoursColor, ContoursColor, 0, CV_FILLED);

の部分でエラーが発生してしまい、実行できません

cvDrawContours(frame, Contour,ContoursColor, ContoursColor, 0, CV_FILLED);

のような形にすると

ラインの外側の白いところを青くすることはできました

どうすればできるでしょうか?

環境はVisual C++ 2010 Express Windows7 OpenCV 2.4.2です

コード:

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#pragma comment(lib,"opencv_imgproc242d.lib")
#pragma comment(lib,"opencv_core242d.lib")
#pragma comment(lib,"opencv_highgui242d.lib")

int _tmain(int argc, _TCHAR* argv[])
{
 int key;
 CvCapture* src;
 IplImage *frame,*img_gray,*img_out;
 CvSeq *Contour;
 CvMemStorage *Storage=cvCreateMemStorage (0);
 CvScalar ContoursColor;
 ContoursColor=CV_RGB( 0, 0, 255 );
 cvNamedWindow("カメラ映像");
 cvNamedWindow("カメラ二値映像");
 src=cvCaptureFromCAM(10);//カメラ映像取得
 if(src==NULL){
	 printf("不可能\n");
	 cvWaitKey(0);
	 return -1;
 }
 frame=cvQueryFrame(src);//フレーム取得

 img_gray=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,1);//frameと同じ枠の箱作成、白黒式
 img_out=cvCreateImage(cvGetSize(frame),IPL_DEPTH_8U,3);//frameと同じ枠の箱作成、カラー式
 while(1){
	 frame=cvQueryFrame(src);//フレーム取得
	 cvCvtColor(frame,img_gray,CV_BGR2GRAY);//frameをBGRからGRAYにして格納
	 cvThreshold(img_gray,img_gray,30,255,CV_THRESH_BINARY);//30以上を白へと還す二値化
	 cvCvtColor(img_gray,img_out,CV_GRAY2BGR);//frameをGRAYからBGRにして格納
	 cvFindContours(img_gray,Storage,&Contour,sizeof(CvContour),CV_RETR_TREE,CV_CHAIN_APPROX_NONE);
	 cvDrawContours(frame, Contour->v_next,ContoursColor, ContoursColor, 0, CV_FILLED);
	 cvShowImage("カメラ映像",frame);
	 cvShowImage("カメラ二値映像",img_out);
	 key=cvWaitKey(2);
	 if(key==27)break;
 }
    cvDestroyAllWindows();
	
	cvReleaseCapture(&src);
	cvReleaseImage(&img_gray);
	cvReleaseImage(&img_out);
	cvReleaseMemStorage (&Storage);
	return 0;
}
 

Re: OpenCVでのカメラ映像での輪郭所得に関して

Posted: 2013年11月11日(月) 21:14
by みけCAT
とりあえず、どんなエラーが出たのでしょうか?
Contour->v_nextがNULLでないことは確認しましたか?

Re: OpenCVでのカメラ映像での輪郭所得に関して

Posted: 2013年11月11日(月) 23:00
by Arare
Contour->v_nextがNULLでした!

ぜんぜんわかりませんでした!ありがとうございます!

Re: OpenCVでのカメラ映像での輪郭所得に関して

Posted: 2013年11月12日(火) 20:47
by Arare
返答にミスがございました

枠組みがあはずなのにNULLになってしまう点が全然わかりませんが、そこは少し考えてみます
解答していただきありがとうございました!