计算机视觉实战(十)图像特征harris角点检测(附完整代码)

我的微信公众号名称:AI研究订阅号
微信公众号ID:MultiAgent1024
公众号介绍:主要研究强化学习、计算机视觉、深度学习、机器学习等相关内容,分享学习过程中的学习笔记和心得!期待您的关注,欢迎一起学习交流进步!

  角点检测的基本原理就是:在角点处画一个框,当这个框无论上下左右移动时像素点变化迅速。因为在一块平滑的区域,没有什么剧烈变化,如下图所示:

角点检测示意图
  目前的角点检测算法可归纳为3类:

  1. 基于灰度图像的角点检测;
  2. 基于二值图像的角点检测;
  3. 基于轮廓曲线的角点检测。

  基本原理:

依据lambad 1,lambad 2的大小不一样,我们可以判断是否是边界,或者角点。

那是否有这样一个值来计算角点呢,而不是看两个lambad:

  OpenCv中角点检测函数为cv2.cornerHarris()其参数设置为:

  • img: 数据类型为 float32 的入图像
  • blockSize: 角点检测中指定区域的大小
  • ksize: Sobel求导中使用的窗口大小,一般取3。
  • k: 取值参数为 [0,04,0.06]

  Python实现结果如下所示:

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)

img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

  结果显示如下所示:

角点检测结果图

完整代码后台回复:图像特征harris角点检测 即可获得链接。

发布了135 篇原创文章 · 获赞 111 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_39059031/article/details/103928500