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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
Python入门篇之字符串
Oct 17 Python
Python简单的制作图片验证码实例
May 31 Python
Python sqlite3事务处理方法实例分析
Jun 19 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
python 实现在Excel末尾增加新行
May 02 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 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
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
纯javascript版日历控件
2016/11/24 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
python提取字典key列表的方法
2015/07/11 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
甜点店创业计划书
2014/01/27 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
初中班干部工作总结
2015/08/10 职场文书
清明节主题班会
2015/08/14 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers