openCV関数 - cvCornerHarrisを試してみたいです。その上に何も黒い画像はcvCornerHarris()を使用して出力結果を取得する
//image file
char imagePath[256] = "./images/lena512color.tiff";
printf("%s\n", imagePath);
IplImage* srcImg = cvLoadImage(imagePath, 1);
if(NULL == srcImg){
printf("Can not open image file(s).\n");
return -1;
}
IplImage* srcImgGry = cvCreateImage(cvGetSize(srcImg), IPL_DEPTH_8U, 1);
cvCvtColor(srcImg, srcImgGry, CV_RGB2GRAY);
// Canny and Harris expect grayscale (8-bit) input.
// And output of harris image must be 32-bit float .
IplImage* harrisImg = cvCreateImage(cvGetSize(srcImg), IPL_DEPTH_32F, 1);
IplImage* cannyImg = cvCreateImage(cvGetSize(srcImg), IPL_DEPTH_8U, 1);
//// Corner detection using Harris-corner
cvCornerHarris(srcImgGry, harrisImg, 5, 5, 0.04);
cvCanny(srcImgGry, cannyImg, 50, 100, 3);
// (5)Display the result
cvNamedWindow ("Img", CV_WINDOW_AUTOSIZE);
cvShowImage ("Img", srcImgGry);
cvNamedWindow ("Harris", CV_WINDOW_AUTOSIZE);
cvShowImage ("Harris", harrisImg);
cvNamedWindow ("Canny", CV_WINDOW_AUTOSIZE);
cvShowImage ("Canny", cannyImg);
cvWaitKey (0);
cvDestroyWindow ("Harris");
cvDestroyWindow ("Img");
cvReleaseImage (&srcImg);
cvReleaseImage (&srcImgGry);
cvReleaseImage (&harrisImg);
cvReleaseImage (&cannyImg);
は私がcvCanny
(cannyImg
)の予想される出力画像を得ることができますが、cvCornerHarris
(harrisImg
)の出力イメージされています。ここに私のC++コードです。 この機能の使用方法をご説明ください。cvCornerHarris
ありがとう!
は、我々はあなたがテストのために使用している画像を見つけることができますか? – karlphillip
これまで使用したことのない関数( 'cvCornerHarris')を使用しているようですので、コードの途中で投げたり、すぐに使えると思ったりしないでください。これはヒントです、よろしいですか?怒らないでください。この練習だけでは、コーディングに多くの時間を節約できます。だから、将来的には問題を最小限の例に分け、それを試して他のパラメータをテストするのを恐れないでください。あなたがそれをしていれば、最終的にあなたのためにうまくいく一連のパラメータが見つけられます。 – karlphillip