亚像素级精确度的角点

有时我们需要最大精度的角点检测。OpenCV为我们提供了函cv2.cornerSubPix(), 它可以提供亚像素级别的角点检测。下面是一个例子。首先我们要找到 Harris 角点,然后将角点的重心传给这个函数进行修正。Harris 角点用红色像素标出,绿色像素是修正后的像素。在使用这个函数是我们要定义一个迭代停止条件。当迭代次数达到或者精度条件满足后迭代就会停止。我们同样需要定义进行角点搜索的邻域大小。

ret, labels, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity, ltype)

image:8位单通道图像

labels:输出标签

stats:Nx5的矩阵(CV_32S):[x0, y0, width0, height0, area0; … ; x(N-1), y(N-1), width(N-1), height(N-1), area(N-1)]

centroids:Nx2 质心矩阵(CV_64F ): [ cx0, cy0; … ; cx(N-1), cy(N-1)]

connectivity:默认为8,4- or 8-connected components

ltype:默认为CV_32S,标签类型 (CV_32S or CV_16U)

cv2.cornerSubPix(image, corners, winSize, zeroZone, criteria)

image:输入图像

corners:角点的初始坐标

winSize:搜索窗口边长的一半

zeroZone:搜索区域中间的dead region边长的一半

criteria:迭代过程的终止条件

例如:

import cv2
import numpy as np

filename = 'test30_3.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

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)

ret, labels, stats, centroids = cv2.connectedComponentsWithStats(dst)

定义一个标准去停止迭代
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)

res = np.hstack((centroids, corners))
np.int0 可以用来省略小数点后面的数字(非四舍五入)。
res = np.int0(res)
img[res[:, 1], res[:, 0]] = [0, 0, 255]
img[res[:, 3], res[:, 2]] = [0, 255, 0]

cv2.imwrite('subpixe.png', img)

结果如下:

亚像素级精确度的角点

可以看出绿色比红色更加精确。

Original: https://blog.csdn.net/weixin_34910922/article/details/128193740
Author: alex1801
Title: 亚像素级精确度的角点

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/787201/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 数据分析:numpy

    numpy 创建数组 * 数据类型与操作 数组形状 数组的计算 读取本地数据和索引 * 读取数据 索引和切片 数值修改 三元运算符 numpy中的nan和常用统计方法 * NAN …

    Python 2023年8月25日
    051
  • tkinter matplotlib 画图

    关键词:tkinter matplotlib 中文乱码 Figure、Axes FigureCanvasTkAgg 列表、数组、表格 点击新建对话框 for i,j in zip(…

    Python 2023年9月7日
    041
  • 【flask扩展】Flask-Migrate的使用

    ; 📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜 🎉 支持我:点赞👍+收藏⭐️+留言📝 📣 系列专栏:flask框架快速入门🍁 💬格言:要成为光,因为有怕黑…

    Python 2023年8月13日
    043
  • 利用Python进行数据分析的学习笔记——chap7

    数据规整化:清理、转换、合并、重塑 合并数据集 pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来。pandas.concat可以沿着一条轴将多个对象…

    Python 2023年8月7日
    086
  • Python类的多态和多态性

    多态指的是一类事物有多种形态,一个类有很多个子类,因而多态的概念是基于继承的 序列数据类型有多种形态:字符串,列表,元组 动物有多种形态:人,狗,猪 动物有多种形态:人类、猪、狗 …

    Python 2023年10月30日
    036
  • <Linux>Django使用教程<一>

    开发环境:deepin、idea2020.1、python3.7、Django3.2.9本次学习 Django的同学,最好具备 python基础,以及 linux基础。 一、安装与…

    Python 2023年8月4日
    064
  • conda简记

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年9月9日
    052
  • Python工具箱系列(二十二)

    互联网世界里最流行的开源关系型数据库之一就是MySQL/MariaDB了,由于高度的相似,故而直接使用mysql统一指称。 windows最吸引人的地方就在于易于安装。mysql在…

    Python 2023年10月30日
    055
  • Pandas中的 transform() 结合 groupby() 用法示例

    首先,假设我们有如下餐厅数据集: import pandas as pd df = pd.DataFrame({ ‘restaurant_id’: [101,102,103,104…

    Python 2023年8月19日
    052
  • python爬虫-urllib2的使用方法详解(python3)

    文章目录 python编程快速上手(持续更新中…) * python爬虫从入门到精通 urllib2概述 – python2与python3对比 urlop…

    Python 2023年8月9日
    068
  • web安全-SSTI模板注入漏洞

    一.初识SSTI 1.什么是SSTI注入? SSTI模板注入(Server-Side Template Injection),通过与服务端模板的输入输出交互,在过滤不严格的情况下,…

    Python 2023年8月9日
    053
  • 如何5分钟上手使用PaddleSeg人像抠图

    随便打开一个Microsoft Visual Studio,新建一个WinForms项目,从下面列表中随便选择一个NET框架。 csharp;gutter:true; net35;…

    Python 2023年10月12日
    037
  • 洞察市场需求,深耕大健康赛道,缤跃酒店打造一站式运动酒店品牌

    近期,人民数据研究院发布《2022全民跑步运动健康报告》,报告中显示参与跑步人群的年龄跨度随着社会对跑步运动不断攀升的热情而增加。现代生活节奏加快、竞争压力大使得部分中青年通过运动…

    Python 2023年10月10日
    049
  • 联想拯救者R720如何组建双通道内存

    联想拯救者R720如何组建双通道内存 第一步 内存条的选择 查看电脑的内存条是什么型号,频率,大小等,不过一般都是单条 8g,不放心的话,你可以自己查看一下,任意使用一个检测软件检…

    Python 2023年6月10日
    094
  • 大龄程序员谈架构经验 内行看门道

    原创2022-10-15 17:01 ·码农阿峰 前言 孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说:”对呀,对呀!……回字有四样…

    Python 2023年10月18日
    055
  • 【C语言】看一眼就让人醍醐灌顶的循环语句

    🔥🔥 欢迎来到小林的博客!!🛰️博客主页:✈️小林爱敲代码🛰️专栏:✈️C语言快速入门🛰️欢迎关注:👍点赞🙌收藏✍️留言 这篇文章给大家介绍三大循环语句,以及break语句和con…

    Python 2023年9月28日
    033
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球