(角点通俗说就是沿x方向、沿y方向的变化明显;边界只沿一个方向有变化)
基本原理(相当于灰度值的变化)
基于泰勒展开,对图像I(x,y)在平移(xi,yi)后进行一阶近似:
opencv-角点检测效果
cv2.cornerHarris(img,blockSize,ksize,k)
1、 img: 数据类型为float32的输入图像
2、blockSize:角点检测中指定区域的大小
3、ksize:sobel求导中使用的窗口大小 (一般ksize=3)
4、k:取值参数【0.04,0.06】
代码:
import cv2
import numpy as np
img=cv2.imread('E:/opencv/chessboard.jpg')
print('img.shape:',img.shape)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04) #自相似程度
print('dst.shape:',dst.shape)
img[dst>0.01*dst.max()]=[0,0,255] #只要一个角点的位置大于自相似最大值1%,则true,用红色标记出来
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destoryAllWindows()



