(角点通俗说就是沿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()