質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3196閲覧

opencvのR6010の解決方法

yamata

総合スコア36

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/06/24 03:15

opencvを用いて、カメラで写真を撮影しその写真に対してテンプレートマッチングを
行うプログラムを作りました。

実行してみると、R6010のエラーがでました。
解決方法を教えていただきたいと思います。

動作環境はVC++2010Express、opencv2.4.9です。

以下にプログラムをのせます。よろしくお願いします。(include部分は省略。)

int

1{ 2 int key;//キー入力用の変数 3 CvCapture *capture;//カメラキャプチャ用の構造体 4 IplImage *frameImage;//キャプチャ画像用IplImage 5 char windowNameCapture[] = "Capture";//キャプチャした画像を表示するウィンドウの名前 6 7 IplImage * temp = NULL; 8 IplImage * dst = NULL; 9 IplImage * img = NULL; 10 IplImage * grey = NULL; 11 12 13 double max_inter1inkage=0; 14 double min_inter1inkage=0; 15 16 CvPoint max_point; 17 CvPoint min_point; 18 CvPoint corner_point; 19 20 int counter = 0; 21 char str[32]; 22 23 24 //カメラを初期化する 25 if ( ( capture = cvCreateCameraCapture( -1 ) ) == NULL ) 26 { 27 //カメラが見つからなかった場合 28 printf( "カメラが見つかりません\n" ); 29 return -1; 30 } 31 32 33 //Windowの生成 34 cvNamedWindow("Show", CV_WINDOW_AUTOSIZE); 35 36 //カメラ・デバイスから画像を取得 37 //frameImage=cvQueryFrame(capture); 38 39 //テンプレート・マッチングに用いる相関値データを格納する画像の領域確保 40 //グレー・スケール画像用に領域確保 41 //grey=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); 42 //dst =cvCreateImage(cvSize(img->width-temp->width+1,img->height-temp->height+1),IPL_DEPTH_32F,1); 43 44 //メインループ 45 while ( 1 ) 46 { 47 //カメラからの入力画像1フレームをframeImageに格納する 48 frameImage = cvQueryFrame( capture ); 49 50 //画像を表示する 51 cvShowImage( windowNameCapture, frameImage ); 52 53 //'q'キーが入力されたらループを抜ける 54 key = cvWaitKey( 1 ); 55 56 if ( key == 'q' ) 57 { 58 break; 59 } 60 else if( key == 'c') 61 { 62 int64 start = cv::getTickCount();//所要時間計測 63 64 sprintf_s(str, "sign.bmp", counter++); 65 cvSaveImage(str, frameImage ); 66 67 68 //--------原画像を読み込む--------- 69 img=cvLoadImage("sign.png",0); 70 //namedWindow("原画像"); 71 //imshow("原画像", src_image); 72 73 //---------テンプレート画像を読み込む------- 74 temp=cvLoadImage("temp.png",0); 75 //temp=cvLoadImage("temp2.png",0); 76 //temp=cvLoadImage("temp3.png",0); 77 //temp=cvLoadImage("temp7.png",0); 78 //temp=cvLoadImage("temp8.png",0); 79 80 //グレー・スケールに変換して格納 81 //cvCvtColor(img,grey,CV_BGR2GRAY); 82 83 //-------テンプレートマッチングを取る----- 84 //grey=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); 85 //dst =cvCreateImage(cvSize(img->width-temp->width+1,img->height-temp->height+1),IPL_DEPTH_32F,1); 86 cvMatchTemplate(img,temp,dst,CV_TM_CCOEFF_NORMED); 87 88 //-----------マッチング点を求める--------- 89 cvMinMaxLoc(dst,&min_inter1inkage,&max_inter1inkage, 90 &min_point,&max_point,NULL); 91 92 //------マッチングを表示する----- 93 //相関値0.75以下ならばLostを表示して次に行く 94 95 if(max_inter1inkage>0.75) 96 { 97 //座標を見やすく代入(直接代入でもよい) 98 corner_point=cvPoint(max_point.x+temp->width, 99 max_point.y+temp->height); 100 101 //マッチング箇所を四角で描画 102 cvRectangle(img,max_point,corner_point,CV_RGB(255,0,0),2); 103 printf("Detection\n"); 104 } 105 106 else 107 { 108 printf("Lost\n"); 109 } 110 111 int64 end = cv::getTickCount(); 112 double elapsedMsec = ( end - start )*1000/cv::getTickFrequency(); 113 114 std::cout << elapsedMsec <<"ms" <<std::endl; 115 } 116 } 117 118 //メモリ開放 119 cvReleaseCapture(&capture); 120 cvDestroyWindow("windowNameCapture"); 121 return 0; 122 123} 124コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.Kanno

2016/06/24 05:29

エラーが出ているときの画面イメージや正確な文言が必要だと思います。 あと、コマンドプロンプトからの実行を行っていれば、実行時エラーの詳細が出力されると思いますが、それも合わせて質問に加えるとよいでしょう。
T.Kanno

2016/06/24 05:33

あと、VisualStudio のデバッガでステップ実行するなりで、エラーの発生している場所を特定して、どのAPI呼び出しで発生しているかの情報もあった方が良いでしょう。よほどのプログラムコードの凡ミスでなければ、OpenCV でおこる実行時エラーの原因はAPIに与えるパラメータが不適切なことが多いです。
yamata

2016/06/24 05:46

すいません。解決しました。
PineMatsu

2016/06/28 08:44

解決済みにしてください。
guest

回答1

0

自己解決

プログラムミスでした。

投稿2016/06/29 05:03

yamata

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問