OpenCV哈里斯(Harris)角点检测的实现


Posted in Python onJanuary 15, 2020

环境

pip install opencv-python==3.4.2.16
 
pip install opencv-contrib-python==3.4.2.16

理论

克里斯·哈里斯Chris Harris)和迈克·史蒂芬斯(Mike Stephens)在1988年的论文《组合式拐角和边缘检测器》中做了一次尝试找到这些拐角的尝试,所以现在将其称为哈里斯拐角检测器。

函数:cv2.cornerHarris()cv2.cornerSubPix()

示例代码

import cv2
import numpy as np
 
filename = 'molecule.png'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)
 
#result is dilated for marking the corners, not important
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()

原图

OpenCV哈里斯(Harris)角点检测的实现

输出图

OpenCV哈里斯(Harris)角点检测的实现

SubPixel精度的角落

import cv2
import numpy as np
 
filename = 'molecule.png'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
# find Harris corners
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
ret, dst = cv2.threshold(dst,0.01*dst.max(),255,0)
dst = np.uint8(dst)
 
# find centroids
ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)
 
# define the criteria to stop and refine the corners
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001)
corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)
 
# Now draw them
res = np.hstack((centroids,corners))
res = np.int0(res)
img[res[:,1],res[:,0]]=[0,0,255]
img[res[:,3],res[:,2]] = [0,255,0]
 
cv2.imwrite('subpixel5.png',img)

输出图

OpenCV哈里斯(Harris)角点检测的实现

参考

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_features_harris/py_features_harris.html#harris-corners

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython 入门教程
Oct 07 Python
python中enumerate的用法实例解析
Aug 18 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Python内置函数delattr的具体用法
Nov 23 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
Python基于win32ui模块创建弹出式菜单示例
May 09 Python
Python 通过打码平台实现验证码的实现
May 13 Python
python调用其他文件函数或类的示例
Jul 16 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Pytorch模型转onnx模型实例
Jan 15 #Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 #Python
详解Python实现进度条的4种方式
Jan 15 #Python
pytorch常见的Tensor类型详解
Jan 15 #Python
pytorch 常用线性函数详解
Jan 15 #Python
python3.8下载及安装步骤详解
Jan 15 #Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 #Python
You might like
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
js 操作符实例代码
2009/10/24 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python实现统计代码行数的方法
2015/05/22 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Python input函数使用实例解析
2019/11/22 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
python IP地址转整数
2020/11/20 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
中职应届生会计求职信
2013/10/23 职场文书
法定代表人授权委托书
2014/04/04 职场文书
安全保证书范文
2014/04/29 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
鲁迅故里导游词
2015/02/05 职场文书
离婚起诉书范本
2015/05/18 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
使用springMVC所需要的pom配置
2021/09/15 Java/Android
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL