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制作花瓣网美女图片爬虫
Oct 28 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
Python编程实现删除VC临时文件及Debug目录的方法
Mar 22 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
tensorflow中next_batch的具体使用
Feb 02 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
Python中的self用法详解
Aug 06 Python
详解python statistics模块及函数用法
Oct 27 Python
python 实现将list转成字符串,中间用空格隔开
Dec 25 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
基于Python爬取京东双十一商品价格曲线
Oct 23 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
php fread函数使用方法总结
2019/05/28 PHP
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python学习之hook钩子的原理和使用
2018/10/25 Python
利用python开发app实战的方法
2019/07/09 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
python 魔法函数实例及解析
2019/09/25 Python
python中JWT用户认证的实现
2020/05/18 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
COS美国官网:知名服装品牌
2019/04/08 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
学校节能宣传周活动总结
2014/07/09 职场文书
销售目标责任书
2014/07/23 职场文书
村安全生产责任书
2014/08/25 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
房地产项目合作意向书
2015/05/08 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
总结Python连接CS2000的详细步骤
2021/06/23 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript
Win11查看设备管理器
2022/04/19 数码科技