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 获取进程pid号的方法
Mar 10 Python
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
Python格式化输出%s和%d
May 07 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Python3+Appium安装使用教程
Jul 05 Python
python实现简单井字棋小游戏
Mar 05 Python
Python爬虫之Spider类用法简单介绍
Aug 04 Python
Python extract及contains方法代码实例
Sep 11 Python
Pycharm plot独立窗口显示的操作
Dec 11 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
利用python实现汉诺塔游戏
Mar 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
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
Yii清理缓存的方法
2016/01/06 PHP
微信支付开发维权通知实例
2016/07/12 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
详解vue-router导航守卫
2019/01/19 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
如何利用Python写个坦克大战
2020/11/18 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
最经典的商业地产项目广告词
2014/03/13 职场文书
库房保管员岗位职责
2014/04/07 职场文书
门店业绩提升方案
2014/06/08 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis
frg-100简单操作(设置)说明
2022/04/05 无线电