Opencv(三)Harris角点检测

角点检测算法可归纳为3类:基于灰度图像的角点检测、基于二值图像的角点检测、基于轮廓曲线的角点检测。基于灰度图像的角点检测又可分为基于梯度、基于模板和基于模板梯度组合3类方法,其中基于模板的方法主要考虑像素领域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。常见的基于模板的角点检测算法有Kitchen-Rosenfeld角点检测算法,Harris角点检测算法、KLT角点检测算法及SUSAN角点检测算法。和其他角点检测算法相比,SUSAN角点检测算法具有算法简单、位置准确、抗噪声能力强等特点。本文对Harris角点检测算法进行实现。

环境Anaconda3(Spyder)+Python3.8.8+OpenCV4.5.4.58

实现代码:

import cv2
import numpy as np
filename='lena.jpg'
img=cv2.imread(filename)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04)

dst=cv2.dilate(dst,None)

#Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
if cv2.waitKey(0)&0xff==27:
    cv2.destroyAllWindows()

原图:
在这里插入图片描述

实现结果:
在这里插入图片描述
参考链接:
https://baike.baidu.com/item/%E8%A7%92%E7%82%B9%E6%A3%80%E6%B5%8B/2872134

猜你喜欢

转载自blog.csdn.net/gxwwww/article/details/121564492