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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
9种python web 程序的部署方式小结
Jun 30 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
Python和C/C++交互的几种方法总结
May 11 Python
python的依赖管理的实现
May 14 Python
详解Django定时任务模块设计与实践
Jul 24 Python
python 多进程队列数据处理详解
Dec 23 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
python绘制汉诺塔
Mar 01 Python
openstack中的rpc远程调用的方法
Jul 09 Python
Python音乐爬虫完美绕过反爬
Aug 30 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实现统计邮件大小的方法
2013/08/06 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
万能的php分页类
2017/07/06 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
JS实现self的resend
2010/07/22 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
大四学生找工作的自荐信
2014/03/27 职场文书
营销总监岗位职责
2014/09/16 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
留学推荐信怎么写
2015/03/26 职场文书
2015年市场部工作总结
2015/04/30 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android
Python循环之while无限迭代
2022/04/30 Python