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

本文实例为大家分享了python+opencv实现霍夫变换检测直线的具体代码,供大家参考,具体内容如下

功能:

创建一个滑动条来控制检测直线的长度阈值,即大于该阈值的检测出来,小于该阈值的忽略

注意:这里用的函数是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()

调用:

>>> import os

>>> os.chdir("g:\homework")

>>>

>>> import HoughLines

minLINELENGTH: 20

minLINELENGTH: 21

minLINELENGTH: 22

minLINELENGTH: 23

minLINELENGTH: 25

minLINELENGTH: 26

minLINELENGTH: 27

minLINELENGTH: 28

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值