角点检测¶
1. 角点检测原理¶
① 沿着水平方向、竖直方向,一个变化比较平稳,一个变化比较迅速,那它就是一个边界。
② 无论是沿着水平方向,还是沿着水平方向,变化都比较明显,则它是角点。
③ 平移前后的灰度值的变化情况,来判断该像素点是否是角点。
2. harris角点检测¶
① harris角点检测函数:cv2.cornerHarris()
- img:数据类型为 float32 的入图像。
- blockSize:角点检测中指定区域的大小。
- ksize:Sobel求导中使用的窗口大小。常用 3。
- k:取值参数为 [0,04,0.06]。常用 0.04。
In [1]:
import cv2
import numpy as np
img = cv2.imread('01_Picture/17_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] # 比相似性最大值的百分之一要大,则标注为角点
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img.shape: (512, 512, 3) dst.shape: (512, 512)