007 OpenCV霍夫变换

news2025/2/23 17:21:53

目录

一、环境

二、霍夫变换原理

三、代码


一、环境

本文使用环境为:

  • Windows10
  • Python 3.9.17
  • opencv-python 4.8.0.74

二、霍夫变换原理

OpenCV中的霍夫变换是一种用于检测图像中直线和圆的算法。它基于图像中像素的分布情况,通过统计像素点之间的相互关系来识别出直线或圆的位置和参数。

霍夫变换的原理是利用图像中的边缘信息来检测直线或圆。在图像中,边缘信息通常表现为灰度值的变化,即相邻像素之间的灰度值差异较大。因此,霍夫变换首先需要对图像进行边缘检测,提取出边缘信息。常用的边缘检测方法有Sobel算子、Canny算子等。

对于直线检测,霍夫变换的基本思想是将图像划分为若干个小区域,然后计算每个小区域内的像素点与该区域内某条直线的关系。具体来说,对于每个小区域,霍夫变换会找到一条最佳拟合该区域内所有像素点的直线,这条直线被称为该区域的“主成分”。接下来,霍夫变换会计算每个小区域内的像素点到其主成分的距离,并统计距离小于某个阈值的像素点的数量。最后,霍夫变换会根据距离和数量的关系来确定图像中的直线位置和参数。

对于圆检测,霍夫变换的基本思想是将图像划分为若干个小区域,然后计算每个小区域内的像素点与该区域内某条圆的关系。具体来说,对于每个小区域,霍夫变换会找到一条最佳拟合该区域内所有像素点的圆,这个圆被称为该区域的“主圆”。接下来,霍夫变换会计算每个小区域内的像素点到其主圆的距离,并统计距离小于某个阈值的像素点的数量。最后,霍夫变换会根据距离和数量的关系来确定图像中的圆心位置和半径。

需要注意的是,霍夫变换只能检测图像中的直线或圆的位置和参数,而不能直接得到它们的具体形状。因此,在使用霍夫变换时,需要根据具体情况选择合适的参数和方法来提高检测的准确性和鲁棒性。

总之,霍夫变换是一种非常有用的图像处理技术,它可以帮助我们快速准确地检测图像中的直线和圆。在实际应用中,霍夫变换被广泛应用于计算机视觉、模式识别、机器视觉等领域。

三、代码

输入图像如下图,利用霍夫变换检测如图线段:

完整代码:

import cv2 as cv
import numpy as np

# 读图
img = cv.imread(cv.samples.findFile('data/sudoku.png'))
# 灰度化
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# 提取canny边缘
edges = cv.Canny(gray,50,150,apertureSize = 3)
# 霍夫变换
lines = cv.HoughLines(edges,1,np.pi/180,200)
for line in lines:
    rho,theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    # 画线
    cv.line(img,(x1,y1),(x2,y2),(0,0,255),2)

cv.imwrite('houghlines3.jpg',img)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1232490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

提升工作效率,使用AnyTXT Searcher实现远程办公速查公司电脑文件——“cpolar内网穿透”

文章目录 前言1. AnyTXT Searcher1.1 下载安装AnyTXT Searcher 2. 下载安装注册cpolar3. AnyTXT Searcher设置和操作3.1 AnyTXT结合cpolar—公网访问搜索神器3.2 公网访问测试 4. 固定连接公网地址 前言 你是否遇到过这种情况,异地办公或者不在公司,想找…

BUUCTF [BJDCTF2020]一叶障目 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源:https://github.com/BjdsecCA/BJDCTF2020 密文: 下载附件,解压得到一张.png图片。 解题思路: 1、在010 Editor中打开&#x…

关于使用宝塔页面Nginx的一些注意事项:Nginx不生效情况,以及解决方案

判断Nginx是否正常运行 使用宝塔页面保存Nginx配置后,有的时候不生效,这就说明Nginx没有正常运行 可以通过以下几种方式排查 通过宝塔 如果能够打开负载状态,说明Nginx运行正常 如果打不开,说明肯定是配置文件或者什么导致ngi…

【ctfshow】web入门-信息搜集-web21~28

SSS web21_爆破什么的,都是基操web22_域名也可以爆破的,试试爆破这个ctf.show的子域名web23_还爆破?这么多代码,告辞!web24_爆个🔨web25_爆个🔨,不爆了web26_这个可以爆web27_CTFsho…

深度神经网络下的风格迁移模型

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 斯坦福大学李飞飞团队的风格迁移模型是一种基于深度学习的图像处理技术,可以将一张图像的风格转移到另一张图像上。该模型…

算法-简单-二叉树-翻转、对称

记录一下算法题的学习8 翻转二叉树 翻转二叉树题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 举例:给定root[5,3,7,2,4,6,10] 翻转成为root[5,7,3,10,6,4,2] 即所有的根节点的左右节点都要互换位置,输出的…

〖大前端 - 基础入门三大核心之JS篇㊴〗- DOM节点的关系

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

【寒武纪(10)】linux arm aarch 是 opencv 交叉编译与使用

文章目录 1、直接找github 别人编译好的2、自主编译参考 3使用CMake检查 参考 1、直接找github 别人编译好的 测试很多,找到一个可用的。 https://github.com/dog-qiuqiu/libopencv 它用了超级模块! OpenCV的world模块也称为超级模块(supe…

NX二次开发UF_CAM_ask_opt_template_object 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_opt_template_object Defined in: uf_cam.h int UF_CAM_ask_opt_template_object(UF_CAM_opt_t * opt_object ) overview 概述 This function provides the object which is used to in…

Python如何将项目直接打包为一键整合包

目录 一、准备项目 二、创建打包文件 三、创建安装脚本 四、执行安装 五、测试安装 六、常见问题与解决方案 总结 Python项目打包成一键整合包是一个比较复杂的任务,需要考虑到项目的各个方面,包括依赖项、配置文件、静态文件、数据库等等。下面是…

澳洲猫罐头如何?我亲自喂养过的优质猫罐头分享

猫罐头要符合三点:营养配方完整均衡、原料新鲜优质、生产工艺科学可靠。只有具备这些特点,才是品质上乘的猫罐头。 猫罐头的三个要素,一个都不能少。配方不均衡,营养就不足;原料不新鲜,生产出来的猫罐头就…

计算机毕业设计python企业员工人事管理系统vue

管理员: 1.员工资料管理:查看员工列表,添加职工,修改信息(搜索员工使用模糊查询) 2.部门管理:查看部门列表,修改信息,添加新部门 3.职工考勤管理:添加&#x…

vue3-响应式核心

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-响应式核心 响应式核心 目录 响应式核心 3.1ref() 3.2computed () 3.3 reactive() 3.4 …

[C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

SAP创建权限对象、角色、并分配角色

一、SU20:维护权限字段 二、SU21创建权限对象,分配权限字段: 三、SU24关联程序和自建权限对象(标准tcode会默认存在标准权限对象) 四、PFCG创建角色 五、SU01给用户分配角色 一、su20:维护权限字段 X点新建: 填入…

智慧化工园区信息化整体解决方案:PPT全53页,附下载

关键词:智慧化工园区建设方案,智慧化工园区建设规范,智慧化工园区建设指南 一、售智慧化工园区建设背景 随着工业化、信息化和数字化进程的加速,化工园区面临着越来越多的挑战,如安全生产、环境保护、能源消耗等问题…

NX二次开发UF_CAM_ask_post_template_name 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_post_template_name Defined in: uf_cam.h int UF_CAM_ask_post_template_name(const char * * post_template_filename ) overview 概述 This function provides the name of the file…

EtherCAT从站EEPROM分类附加信息详解:RXPDO(输入过程数据对象)

0 工具准备 1.EtherCAT从站EEPROM数据(本文使用DE3E-556步进电机驱动器)1 分类附加信息——RXPDO(输入过程数据对象) 1.1 分类附加信息规范 在EEPROM字64开始的区域存储的是分类附加信息,这里存储了包括设备信息、SM配置、FMMU配置在内的诸多信息。每个信息在一段连续的…

全球地表水年度数据集JRC Yearly Water Classification History, v1.4数据集

简介: JRC Yearly Water Classification History, v1.4是一个对全球水资源进行分类的数据集,覆盖了1984年至2019年的时间范围。该数据集是由欧盟联合研究中心(JRC)开发的,使用的数据源是来自Landsat系列卫星的高分辨率…