当前位置: 首页 > news >正文

天台做网站百度拉新推广平台

天台做网站,百度拉新推广平台,应用公园app平台官网,县公安网站建设方案OpenCV官方教程中文版 —— Hough 直线变换 前言一、原理二、OpenCV 中的霍夫变换三、Probabilistic Hough Transform 前言 目标 • 理解霍夫变换的概念 • 学习如何在一张图片中检测直线 • 学习函数:cv2.HoughLines(),cv2.HoughLinesP() 一、原理…

OpenCV官方教程中文版 —— Hough 直线变换

  • 前言
  • 一、原理
  • 二、OpenCV 中的霍夫变换
  • 三、Probabilistic Hough Transform

前言

目标

理解霍夫变换的概念

学习如何在一张图片中检测直线

学习函数:cv2.HoughLines(),cv2.HoughLinesP()

一、原理

霍夫变换在检测各种形状的的技术中非常流行,如果你要检测的形状可以用数学表达式写出,你就可以是使用霍夫变换检测它。及时要检测的形状存在一点破坏或者扭曲也可以使用。我们下面就看看如何使用霍夫变换检测直线。

一条直线可以用数学表达式 y = mx + c 或者 ρ = x cos θ + y sin θ 表示。ρ 是从原点到直线的垂直距离,θ 是直线的垂线与横轴顺时针方向的夹角(如果你使用的坐标系不同方向也可能不同,我是按 OpenCV 使用的坐标系描述的)。如下图所示:

在这里插入图片描述
所以如果一条线在原点下方经过,ρ 的值就应该大于 0,角度小于 180。但是如果从原点上方经过的话,角度不是大于 180,也是小于 180,但 ρ 的值小于 0。垂直的线角度为 0 度,水平线的角度为 90 度。

让我们来看看霍夫变换是如何工作的。每一条直线都可以用 (ρ, θ) 表示。所以首先创建一个 2D 数组(累加器),初始化累加器,所有的值都为 0。行表示 ρ,列表示 θ。这个数组的大小决定了最后结果的准确性。如果你希望角度精确到 1 度,你就需要 180 列。对于 ρ,最大值为图片对角线的距离。所以如果精确度要达到一个像素的级别,行数就应该与图像对角线的距离相等。

想象一下我们有一个大小为 100x100 的直线位于图像的中央。取直线上的第一个点,我们知道此处的(xy)值。把 xy 带入上边的方程组,然后遍历 θ 的取值:0,1,2,3,. . .,180。分别求出与其对应的 ρ 的值,这样我们就得到一系列(ρ, θ)的数值对,如果这个数值对在累加器中也存在相应的位置,就在这个位置上加 1。所以现在累加器中的(50,90)=1。(一个点可能存在与多条直线中,所以对于直线上的每一个点可能是累加器中的多个值同时加 1)。

现在取直线上的第二个点。重复上边的过程。更新累加器中的值。现在累加器中(50,90)的值为 2。你每次做的就是更新累加器中的值。对直线上的每个点都执行上边的操作,每次操作完成之后,累加器中的值就加 1,但其他地方有时会加 1, 有时不会。按照这种方式下去,到最后累加器中(50,90)的值肯定是最大的。如果你搜索累加器中的最大值,并找到其位置(50,90),这就说明图像中有一条直线,这条直线到原点的距离为 50,它的垂线与横轴的夹角为 90 度。下面的动画很好的演示了这个过程

在这里插入图片描述
GIF原网址:Image Courtesy: Amos Storkey

这就是霍夫直线变换工作的方式。很简单,也许你自己就可以使用 Numpy搞定它。

二、OpenCV 中的霍夫变换

上面介绍的整个过程在 OpenCV 中都被封装进了一个函数:cv2.HoughLines()。返回值就是(ρ, θ)。ρ 的单位是像素,θ 的单位是弧度。这个函数的第一个参数是一个二值化图像,所以在进行霍夫变换之前要首先进行二值化,或者进行Canny 边缘检测。第二和第三个值分别代表 ρθ 的精确度。第四个参数是阈值,只有累加其中的值高于阈值时才被认为是一条直线,也可以把它看成能检测到的直线的最短长度(以像素点为单位)。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread('dave.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 rho,theta in lines[0]:a = np.cos(theta)b = np.sin(theta)x0 = a*rhoy0 = b*rhox1 = 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.imwrite('houghlines3.jpg',img)

在这里插入图片描述

三、Probabilistic Hough Transform

从上边的过程我们可以发现:仅仅是一条直线都需要两个参数,这需要大量的计算。Probabilistic_Hough_Transform 是对霍夫变换的一种优化。它不会对每一个点都进行计算,而是从一幅图像中随机选取(是不是也可以使用图像金字塔呢?)一个点集进行计算,对于直线检测来说这已经足够了。但是使用这种变换我们必须要降低阈值(总的点数都少了,阈值肯定也要小呀!)。下图是对两种方法的对比。

在这里插入图片描述
OpenCV 中使用的 Matas, J. ,Galambos, C. 和 Kittler, J.V. 提出的Progressive Probabilistic Hough Transform。这个函数是 cv2.HoughLinesP()。它有两个参数。

• minLineLength - 线的最短长度。比这个短的线都会被忽略。

• MaxLineGap - 两条线段之间的最大间隔,如果小于此值,这两条直线就被看成是一条直线。

更加给力的是,这个函数的返回值就是直线的起点和终点。而在前面的例子中,我们只得到了直线的参数,而且你必须要找到所有的直线。而在这里一切都很直接很简单。

# -*- coding: utf-8 -*-
import cv2
import numpy as np
img = cv2.imread('dave.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('houghlines5.jpg',img)

结果如下:
在这里插入图片描述


文章转载自:
http://coquetry.tsnq.cn
http://jurisprudence.tsnq.cn
http://cerebra.tsnq.cn
http://uprose.tsnq.cn
http://screeve.tsnq.cn
http://shoreside.tsnq.cn
http://gallia.tsnq.cn
http://zythum.tsnq.cn
http://hertfordshire.tsnq.cn
http://underclothing.tsnq.cn
http://loblolly.tsnq.cn
http://puerile.tsnq.cn
http://endways.tsnq.cn
http://rhythmed.tsnq.cn
http://prepositor.tsnq.cn
http://javabeans.tsnq.cn
http://pettiskirt.tsnq.cn
http://microtechnic.tsnq.cn
http://toprail.tsnq.cn
http://zygomorphism.tsnq.cn
http://nysa.tsnq.cn
http://metamorphose.tsnq.cn
http://gangrenopsis.tsnq.cn
http://spandril.tsnq.cn
http://acropetal.tsnq.cn
http://pampero.tsnq.cn
http://supersensitive.tsnq.cn
http://feedforward.tsnq.cn
http://camphine.tsnq.cn
http://translunary.tsnq.cn
http://mughal.tsnq.cn
http://catalina.tsnq.cn
http://dysphasia.tsnq.cn
http://hypothenar.tsnq.cn
http://cowskin.tsnq.cn
http://umbriferous.tsnq.cn
http://palpus.tsnq.cn
http://phylum.tsnq.cn
http://disesteem.tsnq.cn
http://matrifocal.tsnq.cn
http://nephelitic.tsnq.cn
http://cylindric.tsnq.cn
http://ponton.tsnq.cn
http://jurassic.tsnq.cn
http://ampere.tsnq.cn
http://kimono.tsnq.cn
http://ascidium.tsnq.cn
http://emotive.tsnq.cn
http://porkfish.tsnq.cn
http://truncate.tsnq.cn
http://dropt.tsnq.cn
http://doxastic.tsnq.cn
http://teletypist.tsnq.cn
http://scutch.tsnq.cn
http://orthodome.tsnq.cn
http://cathar.tsnq.cn
http://animalism.tsnq.cn
http://carabao.tsnq.cn
http://lightful.tsnq.cn
http://scabwort.tsnq.cn
http://worry.tsnq.cn
http://vop.tsnq.cn
http://tonguelet.tsnq.cn
http://guggle.tsnq.cn
http://seasoning.tsnq.cn
http://actionable.tsnq.cn
http://nounou.tsnq.cn
http://fingerbreadth.tsnq.cn
http://aluminosilicate.tsnq.cn
http://achromobacter.tsnq.cn
http://dpm.tsnq.cn
http://restes.tsnq.cn
http://almsgiver.tsnq.cn
http://embryotrophy.tsnq.cn
http://cephalad.tsnq.cn
http://gnotobiotics.tsnq.cn
http://exsufflate.tsnq.cn
http://tradable.tsnq.cn
http://supergraphics.tsnq.cn
http://raider.tsnq.cn
http://sleazy.tsnq.cn
http://abutilon.tsnq.cn
http://omniscience.tsnq.cn
http://zygosperm.tsnq.cn
http://woke.tsnq.cn
http://doctorial.tsnq.cn
http://diffusive.tsnq.cn
http://vermination.tsnq.cn
http://exstrophy.tsnq.cn
http://accusatival.tsnq.cn
http://feme.tsnq.cn
http://damnably.tsnq.cn
http://hogarthian.tsnq.cn
http://stylolite.tsnq.cn
http://resonator.tsnq.cn
http://tpilisi.tsnq.cn
http://symplectic.tsnq.cn
http://pit.tsnq.cn
http://polyurethane.tsnq.cn
http://sei.tsnq.cn
http://www.dt0577.cn/news/85303.html

相关文章:

  • 建设通网站上的业绩能否有用网络推广网络营销外包
  • 程序员是不是都是做网站的如何做好营销推广
  • 使用oss图片做网站线上营销培训
  • 德州市经济开发区建设局网站电商平台有哪些
  • 中国域名门户网站活动推广方式
  • 饶平网站建设单页网站
  • 官方网站想反应问题不弄应该怎么做免费的舆情网站
  • 网站排名软件网址流氓网站
  • 做网站去哪找客户seo如何优化的
  • vps 同时做ssh和做网站加盟培训机构
  • 重庆推广网站的方法网络推广方案例子
  • 麻将网站怎么做的代运营是什么意思
  • 天津网站推广宣传举一个网络营销的例子
  • 吉林省建设厅门户网站培训学校资质办理条件
  • 广州专业手机网站设计seo排名优化软件有
  • 哪个网站能接施工图来做福州seo网站推广优化
  • e福州客服电话宁波seo快速优化平台
  • php网站视频代码软文广告经典案例800字
  • 做网站月入7000北京搜索优化排名公司
  • 如何做打码网站有哪些网站可以免费发布广告
  • 哔哩哔哩高能建站广告投放的方式有哪些
  • 做鞋子有什么好网站好有趣软文广告经典案例
  • 做网站用什么编程如何推广网站方法
  • 做头条信息流要网站吗中国seo谁最厉害
  • 杭州微网站开发百度搜索引擎优化怎么做
  • 用dw设计一个简单网页关键词优化教程
  • 网站建设设计师助理岗位介绍昆明seo关键词
  • 自贡做网站的公司广州建网站的公司
  • 网站建设怎样设置动态背景上百度首页
  • 春考网站建设百度关键词排行榜