python 用opencv实现霍夫线变换


Posted in Python onNovember 27, 2020

霍夫变换是一种检测任何形状的流行技术,可以检测形状,即使它被破坏或扭曲一点点.
一条线可以表示成y = mx + c或参数形式,像ρ=xcosθ+ysinθ,其中ρ是从原点到直线的垂直距离,θ角是由这条垂线和水平轴以逆时针的方向形成的(这个方向取决于你如何表示坐标系统,这种表示法在OpenCV中使用)

python 用opencv实现霍夫线变换

OpenCV中的Hough变换

cv.HoughLines()
第一个参数,输入图像应该是一个二值图像,因此在应用hough变换之前应用阈值或使用Canny边缘检测.
第二和第三个参数分别是ρ和θ的精度.
第四个参数是阈值,这意味着它应该被视为一条直线.
记住,选票的数量取决于直线上的点的数量,所以它表示应该检测到的最小长度.

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)

lines = cv2.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))

  cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)

cv2.imshow('show',img)
cv2.waitKey()

python 用opencv实现霍夫线变换

概率Hough变换

在hough转换中,你可以看到,即使对于一个有两个参数的线,它也需要大量的计算.概率Hough变换是我们所见的Hough变换的一个优化,它并没有把所有的要点都考虑进去,相反,它只需要一个随机子集,对行检测来说足够.

cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]])

  • minLineLength:最小长度的线。比这更短的线段被拒绝了。
  • maxLineGap:最大限度允许线段之间的间隙把它们当作一条线来对待
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
lines = cv2.HoughLinesP(edges, 1, np.pi/180,100, minLineLength=100, maxLineGap=10)
for line in lines:
  x1, y1, x2, y2 = line[0]
  cv2.line(img, (x1, y1), (x2, y2), (0,255,0), 2)

cv2.imshow('show',img)
cv2.waitKey()

python 用opencv实现霍夫线变换

以上就是python 用opencv实现霍夫线变换的详细内容,更多关于python 实现霍夫线变换的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python生成验证码实例
Aug 21 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python抓取网页中链接的静态图片
Jan 29 Python
儿童python练习实例
May 27 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
Python 监测文件是否更新的方法
Jun 10 Python
python移位运算的实现
Jul 15 Python
Django中的用户身份验证示例详解
Aug 07 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 #Python
五种Python转义表示法
Nov 27 #Python
Django如何继承AbstractUser扩展字段
Nov 27 #Python
如何使用 Flask 做一个评论系统
Nov 27 #Python
python+openCV对视频进行截取的实现
Nov 27 #Python
Python环境配置实现pip加速过程解析
Nov 27 #Python
python实现学生信息管理系统(精简版)
Nov 27 #Python
You might like
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
php目录拷贝实现方法
2015/07/10 PHP
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
angular.element方法汇总
2015/01/07 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
js实现轮播图特效
2020/05/28 Javascript
Python Tkinter GUI编程入门介绍
2015/03/10 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Python变量类型知识点总结
2019/02/18 Python
pytorch 自定义卷积核进行卷积操作方式
2019/12/30 Python
Python模块_PyLibTiff读取tif文件的实例
2020/01/13 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
财务经理的岗位职责
2013/12/17 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
人力资源作业细则
2014/03/03 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
品质保证书格式
2015/02/28 职场文书
2015年中秋寄语
2015/07/31 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
Nginx反向代理、重定向
2022/04/13 Servers