python+opencv实现霍夫变换检测直线

4人阅读 评论(0) 收藏 举报

python+opencv实现高斯平滑滤波
python+opencv实现阈值分割


(2016-5-10)到OpenCV-Python Tutorials’s documentation可以下载


功能:

创建一个滑动条来控制检测直线的长度阈值,即大于该阈值的检测出来,小于该阈值的忽略
注意:这里用的函数是HoughLinesP而不是HoughLines,因为HoughLinesP直接给出了直线的断点,在画出线段的时候可以偷懒

代码:

# -*- coding: utf-8 -*- 

import cv2

#两个回调函数
def HoughLinesP(minLineLength):
    global minLINELENGTH 
    minLINELENGTH = minLineLength + 1
    print "minLINELENGTH:",minLineLength + 1
    tempIamge = scr.copy()
    lines = cv2.HoughLinesP( edges, 1, cv2.cv.CV_PI/180, minLINELENGTH, 0 )
    for x1,y1,x2,y2 in lines[0]:
        cv2.line(tempIamge,(x1,y1),(x2,y2),(0,255,0),1)
    cv2.imshow(window_name,tempIamge)

#临时变量
minLineLength = 20

#全局变量
minLINELENGTH = 20
max_value = 100
window_name = "HoughLines Demo"
trackbar_value = "minLineLength"

#读入图片,模式为灰度图,创建窗口
scr = cv2.imread("G:\\homework\\building.bmp")
gray = cv2.cvtColor(scr,cv2.COLOR_BGR2GRAY)
img = cv2.GaussianBlur(gray,(3,3),0)
edges = cv2.Canny(img, 50, 150, apertureSize = 3)
cv2.namedWindow(window_name)

#创建滑动条
cv2.createTrackbar( trackbar_value, window_name, \
                    minLineLength, max_value, HoughLinesP)

#初始化
HoughLinesP(20)

if cv2.waitKey(0) == 27:  
    cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

调用:

>>> import os
>>> os.chdir("g:\homework")
>>> 
>>> import HoughLines
minLINELENGTH: 20
minLINELENGTH: 21
minLINELENGTH: 22
minLINELENGTH: 23
minLINELENGTH: 25
minLINELENGTH: 26
minLINELENGTH: 27
minLINELENGTH: 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

效果图:

HoughLinesP

查看评论

【Python】第六周 Python Web项目开发实现(下)

-
  • 1970年01月01日 08:00

python数字图像处理(15):霍夫线变换

在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线、圆、椭圆等。 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换。 对于平面中的一条直线,在笛...
  • haoji007
  • haoji007
  • 2016-07-29 11:49:12
  • 824

霍夫变换检测直线的公式推导以及基于opencv的源代码分析并实例实现

参考: http://blog.csdn.net/jia20003/article/details/7724530 http://blog.csdn.net/viewcode/article/deta...
  • piaoxuezhong
  • piaoxuezhong
  • 2017-03-07 11:18:11
  • 2742

利用霍夫变换做直线检测的原理及OpenCV代码实现

利用霍夫变换做直线检测的原理及OpenCV代码实现
  • wenhao_ir
  • wenhao_ir
  • 2016-06-28 14:17:38
  • 3456

霍夫变换检测直线--原理和Matlab实现

霍夫变换本质上是坐标变换,以下介绍了霍夫变换检测直线的原理和Matlab实现。...
  • lkj345
  • lkj345
  • 2016-02-19 20:27:04
  • 9863

霍夫变换检测直线

1.在图像中检测直线的问题,其实质是找到构成直线的所有的像素点。那么问题就是从找到直线,变成找到符合y=mx+c的所有(x,y)的点的问题。 2.进行坐标系变化y=mx+c,变成c=-xm+b。直线...
  • tianwaifeimao
  • tianwaifeimao
  • 2014-05-15 17:55:59
  • 5555

霍夫变换检测直线原理分析

最近在学习《Learning OpenCV》,看到了第六章霍夫变换部分,参考了一些网上的资源,感觉比较多,这里简单总结一下我的理解。如有不对之处,还望指出。 以上面这一副简单的二值图像为...
  • yizhaoyanbo
  • yizhaoyanbo
  • 2017-02-28 00:20:56
  • 587

图像处理之霍夫变换(直线检测算法)

图像处理之霍夫变换(直线检测算法) 霍夫变换是图像变换中的经典手段之一,主要用来从图像中分离出具有某种相同特征的几何 形状(如,直线,圆等)。霍夫变换寻找直线与圆的方法相比与其它方法可以更好的...
  • mydear_11000
  • mydear_11000
  • 2015-08-29 16:50:41
  • 1229

Opencv学习笔记-----霍夫变换直线检测及原理理解

霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍...
  • ycj9090900
  • ycj9090900
  • 2016-10-27 12:33:38
  • 13435

OpenCV-Python教程(9)(10)(11): 使用霍夫变换检测直线 直方图均衡化 轮廓检测

OpenCV-Python教程(9、使用霍夫变换检测直线) 相比C++而言,Python适合做原型。本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV...
  • GarfieldEr007
  • GarfieldEr007
  • 2016-05-05 21:02:48
  • 3835
    个人资料
    等级:
    访问量: 379
    积分: 206
    排名: 99万+
    文章存档