1.harris 角点检测原理







R的取值为多少的时候认为是角点,还要自行设定阈值通过额外的代码来进行判断,在后面的代码有显示。
有时候在角点周围的一小片区域算出来的R值可能都比较大,这时候最后还要进行非极大值抑制
2.opencv函数调用
求出每个点的角分数

ksize一般取(3,3)
k的取值对应的前面角点相应R值里面的a
import cv2
import numpy as np
img = cv2.imread('test_1.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)
#上面部分的代码求出了dst,即每个点的R也就是角分数,下面要设置阈值,满足条件的点才是角点
img[dst>0.01*dst.max()]=[0,0,255] #大于最大角分数1%的点标红为角点,多少可以自己设置
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
图片部分效果如下

教程来自:https://www.bilibili.com/video/BV1oJ411D71z?p=2
更详细的内容:(具有SubPixel准确度的角落)https://blog.csdn.net/u014403318/article/details/80562785
1万+

被折叠的 条评论
为什么被折叠?



