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

Python Opencv实践 - 霍夫线检测(Hough Lines)

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import randomimg = cv.imread("../SampleImages/GreenBoard.jpg")
print(img.shape)
plt.imshow(img[:,:,::-1])#将图像转为二值图
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
plt.imshow(gray, cmap=plt.cm.gray)#使用Canny边缘检测
edges = cv.Canny(gray, 50, 150)
plt.imshow(edges, cmap=plt.cm.gray)#霍夫线检测
#cv.HoughLines(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None) 
#image: 必须是二值图像,推荐使用canny边缘检测的结果图像; 
#rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0 
#theta: 线段以弧度为单位的角度精度,推荐用numpy.pi/180 
#threshod: 累加平面的阈值参数,int类型,超过设定阈值才被检测出线段,值越大,基本上意味着检出的线段越长,检出的线段个数越少。根据情况推荐先用100试试
#lines:这个参数的意义未知,发现不同的lines对结果没影响,但是不要忽略了它的存在 
#minLineLength:线段以像素为单位的最小长度,根据应用场景设置 
#maxLineGap:同一方向上两条线段判定为一条线段的最大允许间隔(断裂),超过了设定值,则把两条线段当成一条线段,值越大,允许线段上的断裂越大,越有可能检出潜在的直线段
#参考资料:https://blog.csdn.net/dcrmg/article/details/78880046
lines = cv.HoughLines(edges, 0.8, np.pi / 180, 150)#绘制霍夫线检测结果
for line in lines:rho,theta = line[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)cv.line(img, (x1,y1), (x2,y2), (0,0,255))plt.imshow(img[:,:,::-1])

 

 

http://www.lryc.cn/news/148107.html

相关文章:

  • Weblogic漏洞(四)之 CVE-2018-2894 任意文件上传漏洞
  • C++:string的[ ],at,push_back
  • C语言(第三十六天)
  • 005_C++数学库常用函数
  • Briefings in Bioinformatics投稿经验分享
  • 【原创】jmeter并发测试计划
  • 飞腾PSPA可信启动--1 非对称加密
  • 基于RabbitMQ的模拟消息队列需求文档
  • “北科Java面试宝典(211最详细讲解)“
  • 自动化测试工具Selenium的语法续.
  • 稳恒电路直观理解
  • LeetCode面试经典150题(day 3)
  • 掌握这个工具,轻松管理所有物流信息
  • 1.Python操作txt文本
  • Redis 主从复制和哨兵模式
  • 【已解决】在 SpringBoot 中使用 CloseableHttpClient 调用接口时,接收参数中的中文变为“?“
  • 研磨设计模式day15策略模式
  • Densenet模型详解
  • 华为eNSP模拟器中,路由器如何添加serial接口
  • Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中
  • 高速公路自动驾驶汽车超车控制方法研究
  • Java 多线程系列Ⅰ(创建线程+查看线程+Thread方法+线程状态)
  • 无入侵接口文档smart-doc
  • nacos配置超级管理员账户,只能mysql存储数据(或者其他数据库)
  • 【前端自动化部署】,Devops,CI/CD
  • 【C语言】探讨蕴藏在表达式求解中的因素
  • 2023/8/31 - Be a wise person and live in the present
  • 【Flutter】Flutter 使用 video_player 播放视频
  • 如何使用 ChatGPT 快速制作播客和其他长篇内容
  • JavaScript基础语法02——JS书写位置