使用opencv中函数实现基于Harris算法的图像角点检测
opencv(python)中Harris角点检测函数
函数原型:
dst = cv.cornerHarris( src, blockSize, ksize, k[, dst[, borderType]] )
src : 原图
blockSize : 检测过程中移动窗口大小
ksize : Soble 滤波器的大小
k : 常数,通常取值范围[0.04,0.16]
对参数有不懂,请参考:Harris角点检测算法讲解及python实现
小例子:
import numpy as np
import cv2 as cv
image1 = cv.imread('../qiqiao.jpg')
gray = cv.cvtColor(image1,cv.COLOR_RGB2GRAY)
gray = np.float32(gray)
dst = cv.cornerHarris(gray, blockSize=10, ksize=3, k=0.04)
# 使角点更大
dst = cv.dilate(dst,None)
# 标记角点为红色
image1[dst>0.01*dst.max()]=[0,0,255]
cv.imshow('result',image1)
cv.imwrite('out.jpg',image1)
cv.waitKey(0)
cv.destroyAllWindows()
实验结果:
原图:
Harris角点检测算法结果:
点个赞再走啊,帅哥!