霍夫直线检测

import cv2 as cv
import numpy as np
img = cv.imread('1.png')def line_detection(image):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)# apertureSize做Canny时梯度窗口的大小edges = cv.Canny(gray, 50, 150, apertureSize=3)# 返回的是r和thetalines = cv.HoughLines(edges, 1, np.pi/180, 200)for line in lines:print(type(line))rho, theta = line[0]a = np.cos(theta)b = np.sin(theta)x0 = a*rhoy0 = b*rho# 乘以1000,是根据源码乘的,通过x1、x2、y1、y2画一条直线x1 = int(x0+1000*(-b))y1 = int(y0+1000*a)x2 = int(x0-1000*(-b))y2 = int(y0-1000*a)cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)  # 2是所画直线长度的宽print(x1,y1,x2,y2)cv.imshow('image_lines', image)line_detection(img);
cv.waitKey(0)
cv.destroyAllWindows()

结论 : 效果不好,漏检很多,不适合精密场合

使用lsd算法检测直线

http://www.ipol.im/pub/art/2012/gjmr-lsd/
LSD的基本实现流程是计算出图像的梯度和场方向,然后对梯度进行排序,然后从大到小进行区域增长,之后对增长得到的区域求最小外接矩形,如果矩形不满足要求,则修改参数重新生长或者修改矩形的大小和位置,若仍旧不满足,则放弃该区域,该方法由于版权问题在opencv中被剔除,有兴趣可以自行找到该作者的主页去

使用fld算法

注意这个算法再contrib包中,先要安装,pip install opencv-contrib-python

## 使用ximgproc的createFastLineDetector
import cv2
import numpy as np### 读取输入图片
img0 = cv2.imread("1.png")
### 将彩色图片转换为灰度图片
img = cv2.cvtColor(img0,cv2.COLOR_BGR2GRAY)### 创建一个LSD对象
fld = cv2.ximgproc.createFastLineDetector()
### 执行检测结果
dlines = fld.detect(img)
### 绘制检测结果
color = 100
for dline in dlines:x0 = int(round(dline[0][0]))y0 = int(round(dline[0][1]))x1 = int(round(dline[0][2]))y1 = int(round(dline[0][3]))color=color+30if color>225:color= 10cv2.line(img0, (x0, y0), (x1,y1), (color,color,color), 1, cv2.LINE_AA)print(x0,y0,x1,y1)
# 显示并保存结果
cv2.imwrite('res.jpg', img0)
cv2.imshow("LSD", img0)
cv2.waitKey(0)
cv2.destroyAllWindows()

结论,较好,但是要自行合并直线

EDlines算法原理

1 运行一个灰度图像,运行边缘检测、边缘绘制ED算法,产生像素相邻的链,称之为边缘。边缘线段直观地反应对象的边界。
2 利用直线度准则,即最小二乘直线拟合法,从生成的像素链中提取线段。
3 线的验证步骤定于亥姆霍兹原理Helmholtz principle ,用来消除虚假线段的检测。
edlines算法无论是速度和效果都是可以的,可以自行研究该算法,该算法研究完毕应该会得到很多东西。

halcon 带通滤波

如果有钱可以考虑halcon商业软件

read_image (Bk45, 'bk45')*带通滤波
bandpass_image (Bk45, Lines, 'lines')
threshold (Lines, Region, 128, 255)*计算划痕
skeleton (Region, Skeleton)
dev_set_colored (12)*生成轮廓
gen_contours_skeleton_xld (Skeleton, Contours, 5, 'filter')
dev_display (Bk45)
dev_display (Contours)

检测直线方法 python相关推荐

  1. python霍夫变换检测直线_OpenCV-Python教程(9、使用霍夫变换检测直线)

    相比C++而言,Python适合做原型.本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处.这篇文章介绍在Python中使用OpenCV的霍夫变换 ...

  2. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  3. python 检测直线 交点_OpenCV-Python教程(9、使用霍夫变换检测直线)

    相比C++而言,Python适合做原型.本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处.这篇文章介绍在Python中使用OpenCV的霍夫变换 ...

  4. python稳健性检验_有哪些比较好的做异常值检测的方法?

    最近很多小伙伴都比较关注异常值检测的方法,接下来小编就为大家介绍几种,希望能帮到大家!! 摘要: 本文介绍了异常值检测的常见四种方法,分别为Numeric Outlier.Z-Score.DBSCA以 ...

  5. python探测端口_Python实现端口检测的方法

    一.背景: 在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等web扫描端口等. 但是在使用站长工具发现: 每次只能输入一 ...

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

    OpenCV-Python教程(9.使用霍夫变换检测直线) 相比C++而言,Python适合做原型.本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同 ...

  7. 火车轨道铁路轨道检测识别(附带Python源码+详细解析)

    现在的网络上,铁轨检测的源码几乎没有,所以自己参照着一篇汽车车道线检测的方法,然后调节参数,实现了铁轨的轨道检测,但现在只能检测直线,弯曲的铁轨检测下一步会实现,实现之后会更新的,敬请期待. 弯轨检测 ...

  8. opencv 检测直线、线段、圆、矩形

    转自:http://blog.csdn.net/byxdaz/archive/2009/12/01/4912136.aspx 检测直线:cvHoughLines,cvHoughLines2 检测圆:c ...

  9. Hough 检测直线

    1.Hough变换 Hough变换是一种快速的形状匹配技术.经典的H ough变换适用于曲线形状可以用参数来描述.而曲线位置未知情况下的曲线检测.如下: 在笛卡儿坐标系中, 直线可以用斜截方程y = ...

最新文章

  1. 卓有成效的管理者应该借助哪些团队协作工具?
  2. ballgown包进行基因差异表达分析
  3. 个人工作总结10(第二阶段)
  4. C/Cpp / #define
  5. 前端学习(2053)vue之电商管理系统电商系统之使用pm2管理
  6. opengl多重纹理映射
  7. Linux***检测基础学习
  8. 怎样才能容易更换DB
  9. GPS、RTK、PPK三种定位技术的原理及应用
  10. 【历史上的今天】10 月 11 日:域名 baidu.com 问世;三星 Galaxy Note 7 爆炸门告一段落;图灵奖数据库先驱诞生
  11. word批量替换向下箭头为回车符号、批量删除空行、批量空格与空行
  12. 用vb调用bartender并打印
  13. 最优化理论与凸优化的用处
  14. Pod状态异常排查问题集-pending状态排查思路
  15. 从 RTL 到 GDS :基于 OpenLANE
  16. 《追寻生命的意义》--后记
  17. 从规范看海洋测绘单验潮站的控制距离
  18. 公关作用下的品牌建设
  19. python中布尔类型的值包括_Python 布尔值(Booleans)
  20. 详解网络爬虫:网络爬虫是干什么的?有哪些应用场景?

热门文章

  1. 2005年3月9日笔记
  2. 在Ubuntu下进行MongoDB安装步骤
  3. 有啥区别?谷歌Chrome浏览器图标8年来首次更新
  4. 马斯克如何通过生小孩统治世界?
  5. 长假大考充电桩:堵车不可怕,没电才尴尬
  6. 苹果可折叠iPhone有望在2023年推出 支持手写笔
  7. FTC再度对Facebook提起反垄断诉讼,要求其出售Instagram和WhatsApp
  8. 明天上线!部分开发者手机已安装鸿蒙OS:超流畅,可装安卓应用
  9. 2020年中国年票房累计已突破122亿元
  10. 百度景鲲:9月15日发布小度真无线智能耳机