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

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

角点检测示意图
  目前的角点检测算法可归纳为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()

  结果显示如下所示:

角点检测结果图

完整代码后台回复:https://github.com/ZhiqiangHo/Opencv-Computer-Vision-Practice-Python-

我的微信公众号名称:小小何先生
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值