先日も、質問したのですが、解決しなかったため、再度質問します。
cvRectangleで囲った領域にのみ、テンプレートマッチングを行う方法を考えています。
画像の様に、1枚の画像の中に2箇所赤枠を囲み、
左の赤枠にはテンプレート1を、右の赤枠にはテンプレート2をそれぞれマッチングさせる方法を探しています。
現在のプログラムを以下に示します。
・赤枠で囲った領域と、ROIの範囲を同じにしたい(右の赤枠が一致しない)
・できたら、もう少し簡潔にしたい
以上、よろしくお願いします。
使用環境は、Windouws7、vc++2010Express、opencv2.4.9です。
int main(int argc, char *argv[]) { IplImage * img = NULL; IplImage * copy_img1 = NULL; IplImage * copy_img2; //--------原画像を読み込む--------- img=cvLoadImage("ペンギン.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); //カラー読み込み copy_img1=cvCloneImage(img); copy_img2=cvCloneImage(img); cvRectangle(img,cvPoint(0,0),cvPoint(200,480),CV_RGB(255,0,0),3); cvRectangle(img,cvPoint(600,0),cvPoint(200,300),CV_RGB(255,0,0),3); //cvSetImageROI(img,cvRect(0,0,img->width/2,img->height/2)); CvRect rect1; rect1.x = cvRound(0); rect1.y = cvRound(0); rect1.width = cvRound(200); rect1.height = cvRound(480); cvSetImageROI(copy_img1,rect1); CvRect rect2; rect2.x = cvRound(600); rect2.y = cvRound(0); rect2.width = cvRound(200); rect2.height = cvRound(300); cvSetImageROI(copy_img2,rect2); //テンプレート画像表示 cvNamedWindow("img_window",CV_WINDOW_AUTOSIZE); cvShowImage("img_window",img); //テンプレート画像表示 cvNamedWindow("copy_img1_window",CV_WINDOW_AUTOSIZE); cvShowImage("copy_img1_window",copy_img1); //テンプレート画像表示 cvNamedWindow("copy_img2_window",CV_WINDOW_AUTOSIZE); cvShowImage("copy_img2_window",copy_img2); cvWaitKey(0); }
回答1件
あなたの回答
tips
プレビュー