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;
}