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

微网站微信数据库设计免费app制作网站

微网站微信数据库设计,免费app制作网站,冀icp 网站建设,成都电子商务平台网站制作报价OpenCV官方教程中文版 —— Hough 直线变换 前言一、原理二、OpenCV 中的霍夫变换三、Probabilistic Hough Transform 前言 目标 • 理解霍夫变换的概念 • 学习如何在一张图片中检测直线 • 学习函数#xff1a;cv2.HoughLines()#xff0c;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值。把 x 和 y 带入上边的方程组然后遍历 θ 的取值0123. . .180。分别求出与其对应的 ρ 的值这样我们就得到一系列ρ, θ的数值对如果这个数值对在累加器中也存在相应的位置就在这个位置上加 1。所以现在累加器中的50901。一个点可能存在与多条直线中所以对于直线上的每一个点可能是累加器中的多个值同时加 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://www.zqtcl.cn/news/119490/

相关文章:

  • 南阳建设网站哪家好做金融网站
  • 挖矿网站怎么做域名注册需要多少钱?
  • 哈尔滨制作网站企业各位给推荐个网站
  • 程序员做网站类的网站犯法吗wordpress源码系统下载
  • 西安注册公司在哪个网站国际知名工程咨询公司
  • 重庆市网站备案材料做网站和做新媒体运营
  • 大岭山网站建设公司网站建设需要具备的能力
  • 网站建设接外包流程网上可以报警备案吗
  • 建筑网站接单WordPress文章数据转emlog
  • 海口网络平台网站开发wordpress on lnmp
  • 手机怎么登录自己做的网站免费注册域名网站知乎
  • 万宁市住房和城乡建设局网站网页游戏制作过程的
  • 网站建设批复意见浏览有关小城镇建设的网站 记录
  • 做国际贸易做什么网站遵义做网站优化
  • 电商平台正在建设中网站页面提示开发手机网站用什么好
  • 电商设计素材网站推荐百度云app下载安装
  • 网站怎样和首页做链接地址百度怎么打广告在首页
  • 眉县做网站网站开发技术可行性分析
  • 深圳求职网站哪个好网站上面的在线咨询是怎么做的
  • 做饰品一般用什么网站做首饰凡客数据
  • 工业电商做网站怎么样wordpress 韩国 主题
  • 网站的优化从几个方面网站建设需注意哪些事项
  • 网站建设的技术有哪些内容东莞网站建设最优
  • 网站建设税费很多网站没有后台
  • 百度云主机上装网站flash怎么做网页
  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设