角点检测cornerHairris
一、cornerHarris()函数
1.1 cornerHarris()函数各参数详解
voidcornerHarris(InputArray src,OutputArray dst,int blockSize,int ksize,double k,intborderType =BORDER_DEFAULT)
Ø 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可,且需为单通道8位或者浮点型图像。
Ø 第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放Harris角点检测的输出结果,和源图片有一样的尺寸和类型。
Ø 第三个参数,int类型的blockSize,表示邻域的大小,更多的详细信息在cornerEigenValsAndVecs()中有讲到。
Ø 第四个参数,int类型的ksize,表示Sobel()算子的孔径大小。
Ø 第五个参数,double类型的k,Harris参数。
Ø 第六个参数,int类型的borderType,图像像素的边界模式,注意它有默认值BORDER_DEFAULT。更详细的解释,参考borderInterpolate()函数。
1.2调用示例
Mat ScrImage, OutImage, OutImage1, OutImage2, OutImage3;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg");
cornerHarris(ScrImage, OutImage1, 2, 3, 0.01);//角点检测
threshold(OutImage1,OutImage2, 0.001, 255, THRESH_BINARY);
imshow("【角点检测(二值化)】",OutImage2);
二、完整程序
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespacestd;
using namespacecv;
int main()
{
Mat ScrImage, ScrImgaeCopy1, OutImage, OutImage1, OutImage2;
ScrImage = imread("E:\\1TJQ\\Opencv\\Images\\image1.jpg",0); //读入图像 \\image1.jpg brownbug.jpg whitebug.jpg
imshow("【原图】", ScrImage);
cornerHarris(ScrImage,OutImage1, 2, 3, 0.01);//角点检测
threshold(OutImage1,OutImage2, 0.001, 255, THRESH_BINARY);
imshow("【角点检测(二值化)】", OutImage2);
waitKey(0);
return NULL;
}
参考内容:
http://www.cnblogs.com/mq0036/p/5902104.html