ページ 11

OpenCV(C++)のコーナー検出について

Posted: 2016年8月10日(水) 15:03
by testname
misscode00さん2016/8/1014:57:56
最近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;
   }
 }

}

Posted: 2016年8月10日(水) 15:09
by testname
どなたかご教授ください。

Posted: 2016年8月10日(水) 15:28
by testname
修正です。

for(int k------) →for(float k--------)

Re: OpenCV(C++)のコーナー検出について

Posted: 2016年8月10日(水) 15:34
by testname
すみません!解決しましたm(._.)m