OpenCV(C++)のコーナー検出について
Posted: 2016年8月10日(水) 15:03
misscode00さん2016/8/1014:57:56
最近OpenCVを触り始めたのですが、cvGoodFeaturesToTrackという関数でコーナーを検出する際に、原因不明のエラーに悩まされています。
下のコードはそのプログラムの一部です。
いろいろ試してみたところ、GoofFreaturesToTrackの引数として渡している値(下のコードで言う変数"k")に問題があるようです。
"k"のところに0.1や0.01などの実数を直接いれれば、問題なく動くのですが、変数(For文で使用している"k")を使用すると、二周目のループで動作がストップしてしまいます。
なぜなのでしょうか。
ちなみに、ここではGUIライブラリ"Qt"に組込んで使っています。
最近OpenCVを触り始めたのですが、cvGoodFeaturesToTrackという関数でコーナーを検出する際に、原因不明のエラーに悩まされています。
下のコードはそのプログラムの一部です。
いろいろ試してみたところ、GoofFreaturesToTrackの引数として渡している値(下のコードで言う変数"k")に問題があるようです。
"k"のところに0.1や0.01などの実数を直接いれれば、問題なく動くのですが、変数(For文で使用している"k")を使用すると、二周目のループで動作がストップしてしまいます。
なぜなのでしょうか。
ちなみに、ここではGUIライブラリ"Qt"に組込んで使っています。
for(int k=0.1;;k+=0.1){
if(tmp_flag) break;
if(k>1.0){
ui->logBrowser->insertPlainText("該当する頂点が見つかりませんでした\n");
flag=1;
break;
}
IplImage *tmp1 = cvCreateImage(cvGetSize(input_tmp), IPL_DEPTH_32F, 1);
IplImage *tmp2 = cvCreateImage(cvGetSize(input_tmp), IPL_DEPTH_32F, 1);
CvPoint2D32f *tmpcorners = (CvPoint2D32f *)cvAlloc(corner_count * sizeof(CvPoint2D32f));
cvGoodFeaturesToTrack(gray_img, tmp1, tmp2, tmpcorners, &corner_count,k/*ここ*/, 15);
cvReleaseImage(&tmp1);
cvReleaseImage(&tmp2);
for(int i=0;0!=tmpcorners[i].x+tmpcorners[i].y;i++){
if(abs(tmpcorners[i].x-(x-20))<=20&&abs(tmpcorners[i].y-(y-32))<=20){
tmp_flag=1;
tmp_x=tmpcorners[i].x;
tmp_y=tmpcorners[i].y;
cout<<i<<endl;
}
}
}