Harris角点检测

来源:互联网 发布:cpu淘宝e5水多深 编辑:程序博客网 时间:2024/06/05 02:32

一、Harris检测原理
参见另外一篇博,是用matlab实现的客:http://blog.csdn.net/zhangchen1003/article/details/48162687


二、opencv代码实现

#include<opencv2\core\core.hpp>#include<opencv2\imgproc\imgproc.hpp>#include<opencv2\highgui\highgui.hpp>using namespace cv;int thresh;void on_Change(int,void*){    Mat image=imread("12.jpg",0);    Mat imageCopy=image.clone();    //显示原图    namedWindow("original image",1);    imshow("original image",image);    //角点检测    Mat harrisImage;    cornerHarris(image,harrisImage,3,5,0.01);    //归一化    Mat normImage;    normalize(harrisImage,normImage,0,255,NORM_MINMAX);    //转换成8位无符号整形    Mat scaledImage;    convertScaleAbs(normImage,scaledImage);    //将角点绘制出来    for(int i=0;i<normImage.rows;i++){        for(int j=0;j<normImage.cols;j++){            if( (int)normImage.at<float>(i,j)>thresh){                circle(imageCopy,Point(i,j),5,Scalar(255,0,0));                circle(scaledImage,Point(i,j),5,Scalar(0,255,0));            }        }    }    imshow("harrisDetector",imageCopy);    namedWindow("scaledImage",1);    imshow("scaledImage",scaledImage);}int main(){    thresh=0;    namedWindow("harrisDetector",1);    createTrackbar("阈值","harrisDetector",&thresh,180,on_Change);    waitKey(0);    return 0;}

之前总是出现内存错误,后来把图片放在根目录下(和CPP文件所在地),debug模式才不出现错误,弄了一上午。。。。

0 0