質問: [self UIImageFromIplImage:ipl_src_img]; cvReleaseImage (&ipl_src_img); cvReleaseImage (&resize_ipl_src_img); cvReleaseImage (&ipl_tmp_img); cvReleaseImage (&dst_img); return uii_src_img; } ``` ### 補足情報 テンプレートマッチングはこちらを参考にしました。 opencv.jp - OpenCV:マッチング UIImageとiplimageの相互変換はこちらをそのまま使っています Qiita UIImageとIplImageの相互変換 よろしくお願いします。 ### 解決 テンプレートに真っ黒、真っ白のものを利用していましたが、スクリーンショットを切り抜いたような画像を使うと正常にマッチングが行われました。 指摘にあった、縮小時の四角の位置が正しくないことについて。 テンプレートを縮小していない今回の場合は、表示される四角の大きさをサーチ画像を縮小した分だけ大きくしてあげる必要がりました。 ``` cvRectangle (ipl_src_img, max_loc,cvPoint (max_loc.x + ipl_tmp_img->width / 0.2, max_loc.y + ipl_tmp_img->height / 0.2), CV_RGB (255, 0, 0), 3); ```
回答: 0.2倍にすると赤枠の位置がおかしくなったので等倍で試しましたが、コードそのままで正常に認識しました。(0.2倍でも赤枠の位置がおかしいだけで認識はしているようです) !marimo 対象画像を1/5にすることで、テンプレート画像の方が大きくなったりしてないでしょうか? ■追記 dst_img=0とのことですが、検出前の生成の時点で失敗しているのではないでしょうか? ``` dst_img = cvCreateImage (dst_size, IPL_DEPTH_32F, 1); ``` dst_sizeの値はどうなってますか?