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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Arare

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

#1

投稿記事 by Arare » 12年前

カメラから所得したフレームを二値化して、画像の黒いラインを青色にしようと思っているのですが

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

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 12年前

とりあえず、どんなエラーが出たのでしょうか?
Contour->v_nextがNULLでないことは確認しましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Arare

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

#3

投稿記事 by Arare » 12年前

Contour->v_nextがNULLでした!

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

Arare

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

#4

投稿記事 by Arare » 12年前

返答にミスがございました

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

閉鎖

“C言語何でも質問掲示板” へ戻る