哈里斯角检测是克里斯·哈里斯(Chris Harris)和迈克·斯蒂芬斯(Mike Stephens)在他们论文中提出的一种角检测方法。
cv2.cornerHarris()函数根据哈里斯角检测器算法检测图像中的角,其基本格式如下。
dst=cv2.cornerHarris(src,blockSize,ksize,k)
参数说明如下。
dst为返回结果,它是一个numpy.ndarray对象,大小和src相同,每一个数组元素对应一个像素点,其值越大,对应像素点是角的概率越高。
src为8位单通道或浮点值图像。
blockSize为邻域大小,值越大,检测出的角占的区域越大。
ksize为哈里斯角检测器使用的Sobel算子的中孔参数。
k为哈里斯角检测器的自由参数。ksize和k影响检测的敏感度,值越小,检测出的角越多,但准确率越低。
哈里斯角检测
import cv2
import numpy as np
img=cv2.imread('cube.jpg') #打开输入图像
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像
gray = np.float32(gray) #转换为浮点类型
dst = cv2.cornerHarris(gray,8,7,0.01) #执行角检测
将检测结果中值大于“最大值*0.02”对应的像素设置为红色
img[dst>0.02*dst.max()]=[0,0,255]
cv2.imshow('dst',img) #显示检测结果
cv2.waitKey(0)