harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性高,尤其对L型角点检测精度高。但由于采用了高斯滤波,运算速度相对较慢,焦点信息有丢失和位置偏移的现象,而且角点提取有聚簇现象。
实现Harris角点检测:cornerHarris()函数
c++:void cornerHarrid (InputArray src,OutputArray dst,int blockSize,int ksize,double k, intboederType=BORDER_DEFAULT)
第一个参数:InputArray类型的src,输入图像,即原图像,填Mat类的对象即可,且需为单通道8位或者浮点型图像。
第二个参数:OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放Harris角点检测的输出结果,和原图片有一样的尺寸和类型。
第三个参数:int类型的blockSize,表示领域的大小。
第四个参数:int类型的ksize,表示Soble()算子的孔径大小。
第五个参数:double类型的k,Harris参数。
第六个参数:int类型的borderType,图像像素的边界模式。注意它有默认值BORDER_DEFAULT.
#include<opencv2\opencv.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
using namespace cv;