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 相关文章推荐
Python实现程序的单一实例用法分析
Jun 03 Python
详解Python多线程
Nov 14 Python
Python 数据结构之旋转链表
Feb 25 Python
Python实现在线音乐播放器
Mar 03 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 Python
python实现超市商品销售管理系统
Nov 22 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
flask框架自定义url转换器操作详解
Jan 25 Python
Python递归函数特点及原理解析
Mar 04 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
详解Python直接赋值,深拷贝和浅拷贝
Jul 09 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php操作JSON格式数据的实现代码
2011/12/24 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
详解php协程知识点
2018/09/21 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
pyqt4教程之widget使用示例分享
2014/03/07 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
网站推广策划方案
2014/06/04 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
活动总结书怎么写
2015/05/11 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
python实现三次密码验证的示例
2021/04/29 Python
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL