hough 变换

hough 变换画图

hough 变换

原理

过直角坐标系下的一个点,有无数条线,每条线都有唯一的极坐标表示(ρ,Θ)。在极坐标系下的点,用经过该点的直线极坐标表示为曲线。

这里写图片描述

说了这么多,这就是原理上hough变换的最底层原理,事实上完全可以自己写程序去实现这些,然而,也说过,hough变换是一个耗时耗力的算法,自己写循环实现通常很慢,曾经用matlab写过这个,也有实际的hough变换例子可以看看:

虹膜识别(三):Hough变换检测内圆边缘

import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('line.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度图像 #open to see how to use: cv2.Canny #http://blog.csdn.net/on2way/article/details/ edges = cv2.Canny(gray,50,200) plt.subplot(121),plt.imshow(edges,'gray') plt.xticks([]),plt.yticks([]) #hough transform lines = cv2.HoughLines(edges,1,np.pi/180,160) lines1 = lines[:,0,:]#提取为为二维 for rho,theta in lines1[:]: 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)) cv2.line(img,(x1,y1),(x2,y2),(255,0,0),1) plt.subplot(122),plt.imshow(img,) plt.xticks([]),plt.yticks([]) 

函数cv2.HoughLinesP()是一种概率直线检测,我们知道,原理上讲hough变换是一个耗时耗力的算法,尤其是每一个点计算,即使经过了canny转换了有的时候点的个数依然是庞大的,这个时候我们采取一种概率挑选机制,不是所有的点都计算,而是随机的选取一些个点来计算,相当于降采样了。这样的话我们的阈值设置上也要降低一些。在参数输入输出上,输入不过多了两个参数:minLineLengh(线的最短长度,比这个短的都被忽略)和MaxLineCap(两条直线之间的最大间隔,小于此值,认为是一条直线)。输出上也变了,不再是直线参数的,这个函数输出的直接就是直线点的坐标位置,这样可以省去一系列for循环中的由参数空间到图像的实际坐标点的转换。

import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('room.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度图像 #open to see how to use: cv2.Canny #http://blog.csdn.net/on2way/article/details/ edges = cv2.Canny(gray,50,200) plt.subplot(121),plt.imshow(edges,'gray') plt.xticks([]),plt.yticks([]) #hough transform lines = cv2.HoughLinesP(edges,1,np.pi/180,30,minLineLength=60,maxLineGap=10) lines1 = lines[:,0,:]#提取为二维 for x1,y1,x2,y2 in lines1[:]: cv2.line(img,(x1,y1),(x2,y2),(255,0,0),1) plt.subplot(122),plt.imshow(img,) plt.xticks([]),plt.yticks([]) 
C++: void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold, double minLineLength=0, double maxLineGap=0 ) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227433.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:19
下一篇 2026年3月16日 下午9:20


相关推荐

  • java软件工程师自我评价_JAVA工程师简历自我评价

    java软件工程师自我评价_JAVA工程师简历自我评价JAVA 工程师简历自我评价无论在学习 工作或是生活中 我们都可能会使用到自我评价 自我评价具有重要的社会功能 它极大地影响人与人之间的交往方式 那要怎么写好自我评价呢 以下是小编收集整理的 JAVA 工程师简历自我评价 仅供参考 希望能够帮助到大家 JAVA 工程师简历自我评价 11 有较强的分析 解决问题的能力 具有较强逻辑思维能力和表达能力 2 性格开朗 积极乐观 能以极大的 热情投入工作 3 具

    2026年3月17日
    2
  • iOS 检查app版本更新操作

    iOS 检查app版本更新操作

    2021年8月27日
    156
  • Distiller:神经网络压缩研究框架

    Distiller:神经网络压缩研究框架Distiller 是由 IntelAILab 维护的基于 PyTorch 的开源神经网络压缩框架 主要包括 用于集成剪枝 pruning 正则化 regularizati 和量化 quantization 算法的框架 一套用于分析和评估压缩性能的工具 现有技术压缩算法的示例实现 这算是目前我发现的最完整的压缩框架了 比较适合科研工作 下面简单说一下安装和使用 NervanaSy

    2026年3月18日
    2
  • Python 变量作用域

    Python 变量作用域变量作用域 scope 在 Python 中是一个容易掉坑的地方 Python 的作用域一共有 4 中 分别是 L Local 局部作用域 E Enclosing 闭包函数外的函数中 G Global 全局作用域 B Built in 内建作用域以 L E G B 的规则查找 即 在局部找不到 便会去局部外的局部找 例如闭包 再找不到就

    2026年3月18日
    2
  • apache 负载均衡_windows apache 实现负载均衡

    apache 负载均衡_windows apache 实现负载均衡最近做的一个项目可能需要用Aapche实现访问请求分流提高访问性能。因此自己研究了一下。现在把我自己配置成功的过程分享一下。首先要下载Apache.建议从官网下载http://httpd.apache.org/download.cgi我安装的是最新的版本2.4.25。安装方法参照http://jingyan.baidu.com/article/296

    2025年8月26日
    7
  • Linux tomcat安装详解

    Linux tomcat安装详解欢迎访问我的个人博客网站:http://www.yanmin99.com/一、tomcat安装1、下载JDK和Tomcat//通过wget下载wgethttp://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gzwgethttp://download.ora

    2022年6月2日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号