昨天无意中浏览看到角点的概念,并加上想要切换到OpenCV的平台上,因此网上搜了一下,测试了一下面的角点测试代码;
int main(int argc, char *argv[]) { CvPoint2D32f pt[200]; int cornerCount = 30; IplImage *src = cvLoadImage("harris.png"); IplImage *grayImage = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); IplImage *eigimg = cvCreateImage(cvGetSize(src), IPL_DEPTH_32F, 1); IplImage *tmpimg = cvCloneImage(eigimg); cvCvtColor(src, grayImage, CV_BGR2GRAY); cvGoodFeaturesToTrack(grayImage, eigimg, tmpimg, pt, &cornerCount, 0.1, 10, NULL, 3, 0, 0.04); for (int i=0; i<cornerCount; ++i) { cvDrawCross(src, pt[i]); // 这个是自己写的一个辅助函数 } cvNamedWindow("corner detection", CV_WINDOW_AUTOSIZE); cvShowImage("corner detection", src); cvWaitKey(0); return 0; }
测试前后对比图像如下: