我只想嘗試openCV函數 - cvCornerHarris。這裏是我的C++代碼:無法獲得使用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
)輸出圖像與任何在其上的黑色圖像。 請幫忙解釋如何使用這個功能cvCornerHarris
。謝謝!
我們在哪裏可以找到你正在使用的測試圖像? – karlphillip
看起來您正在使用之前從未使用過的函數('cvCornerHarris'),因此請勿將其放在代碼的中間,並期望它可以直接使用。這是一個提示,好嗎?不要生氣。單單這種做法可以爲您節省大量編碼時間。所以在將來,將問題隔離到一個最小的例子,不要害怕玩它並測試其他參數。如果你已經完成了,你最終會找到一組適用於你的參數。 – karlphillip