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

news2024/11/19 16:47:51
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
import random

img = 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 * rho
    y0 = b * rho
    x1 = 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.coloradmin.cn/o/955681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【【萌新的STM32学习25--- USART寄存器的介绍】】

萌新的STM32学习25- USART寄存器的介绍 STM32–USART寄存器介绍(F1) 控制寄存器1 (CR1) 位13: 使能USART UE 0: USART分频器和输出被禁止 1: USART模块使能 位12 : 配置8个数据位…

正中优配:股票xd什么意思

作为本钱市场中的重要一环,股票出资已经成为现代个人和组织出资的重要挑选之一。而在股票出资中,出资者常常会看到股票的价格上出现"xd"字样,这时候不少出资者就会疑问,这个"xd"到底是什么意思?对…

Java“牵手”1688整店商品API接口数据,通过店铺ID获取整店商品详情数据,1688店铺所有商品API申请指南

1688平台店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取1688整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…

骨传导耳机音质怎么样、十大公认音质好的骨传导耳机推荐

骨传导耳机的音质相比传统的耳塞式或耳罩式耳机会有所不同。下面是骨传导耳机音质和入耳式耳机音质的区别: 1、低频听感: 相对传统耳机而言,骨传导耳机的低频响应可能稍显不足。由于声音是通过振动传输到内耳,而不是通过直接振动…

Python 实战之ChatGPT + Python 实现全自动数据处理/可视化详解

本文目录 一、引言 二、成果演示——口述式数据可视化 三、远原理述 四、实现过程 (一)环境配置 (二)申请OpenAI账号 (一)调用ChatGPT API (二)设计AI身份,全自动处理数据…

基于食肉植物算法优化的BP神经网络(预测应用) - 附代码

基于食肉植物算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于食肉植物算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.食肉植物优化BP神经网络2.1 BP神经网络参数设置2.2 食肉植物算法应用 4.测试结果:5…

GPU编程(基于Python和CUDA)(二)——显示GPU信息

系列文章目录 GPU编程(基于Python和CUDA)(一)——零基础安装pycuda GPU编程(基于Python和CUDA)(二)——显示GPU信息 显示GPU信息 系列文章目录前言通过CUDA查看GPU信息使用pycuda查…

使用openpyxl来创建一个月的日程表

首先你心里要有一张表的样子,openpyxl才能帮你创建出其余的29张。 import openpyxl from openpyxl.styles import Alignment, Font import calendar from datetime import datework_path rXX\YY\ZZ\日报-九月.xlsxtry:workbook openpyxl.load_workbook(work_path…

The Annotated Transformer(Attention Is All You Need)

"Attention is All You Need"[1] 一文中提出的Transformer网络结构最近引起了很多人的关注。Transformer不仅能够明显地提升翻译质量,还为许多NLP任务提供了新的结构。虽然原文写得很清楚,但实际上大家普遍反映很难正确地实现。 所以我们为此…

不使用VH6501设备,通过VN1630等普通设备使用canConfigureBusOff函数进行busoff干扰测试

** 特别注意一下,使用这个函数需要你的vector驱动在9.6以上以及支持 ISO CAN FD. ** 函数canConfigureBusOff 可以通过脚本的形式产生bus off,而VH6501可以通过干扰bit位来产生bus off(使用CANoe Demo - CANDisturbanceMain进行Bus Off测试)。 对于函数canConfigureBusOf…

Cypress web自动化windows环境npm安装Cypress

前言 web技术已经进化了,web的测试技术最终还是跟上了脚步,新一代的web自动化技术出现了? Cypress可以对在浏览器中运行的任何东西进行快速、简单和可靠的测试。 官方地址https://www.cypress.io/,详细的文档介绍https://docs.cypress.io/g…

openGauss学习笔记-56 openGauss 高级特性-DCF

文章目录 openGauss学习笔记-56 openGauss 高级特性-DCF56.1 架构介绍56.2 功能介绍56.3 使用示例 openGauss学习笔记-56 openGauss 高级特性-DCF DCF全称是Distributed Consensus Framework,即分布式一致性共识框架。DCF实现了Paxos、Raft等解决分布式一致性问题典…

[SpringBoot3]远程访问@HttpExchange

六、远程访问HttpExchange[SpringBoot3] 远程访问是开发的常用技术,一个应用能够访问其他应用的功能。SpringBoot提供了多种远程访问的技术。基于HTTP协议的远程访问是最广泛的。SpringBoot中定义接口提供HTTP服务。生成的代理对象实现此接口,代理对象实…

C语言入门篇(九)

前言   本篇分享的是部分操作符的概念与用法,从经典例题入手,带你快速了解和掌握。   收录专栏:浅谈C语言 操作符详解下 10. 逗号表达式11. 下标引用、函数调用和结构成员12. 表达式求值12.1 隐士类型转换12.2 算术转换12.3 操作符的属性…

海面漂浮物垃圾识别检测算法

海面漂浮物垃圾识别检测算法通过yolo系列网络框架模型算法,海面漂浮物垃圾识别检测算法一旦识别到海面的漂浮物垃圾,海面漂浮物垃圾识别检测算法立即发出预警信号。目标检测架构分为两种,一种是two-stage,一种是one-stage&#xf…

MFC -- Date Time Picker 控件使用

当前环境:VS2015 Windows 10 //(一)使用普通函数, 获取当前时间CString strCurrentTime; COleDateTime m_time COleDateTime::GetCurrentTime(); strCurrentTime m_time.Format(_T("%Y-%m-%d %H:%M:%S")); SetDlgIt…

stm32之IIC协议

主要通过两个层面来讲:物理层、协议层。 IIC是一个同步半双工串行总线协议。 一、物理层(通信模型) 1、最早是飞利浦公司开发的这个协议,最早应用到其产品上去。 2、两线制(两根信号线) 其中SCL为时钟…

windows下安装mysql

1.下载mysql压缩包 官网下载 我这里选择了最新的版本下载 百度网盘下载,提取码:fu48 2.解压 将下载的压缩文件解压到D:\data\mysql,可自定义位置。 3.配置环境变量 【我的电脑】右键选择【属性】,然后按下图操作,配…

Swing程序设计(2)JFrame窗体

文章目录 前言一、JFrame窗体的介绍 1.创建JFrame窗体2.窗体容器中添加或移除组件二、JFrame窗体的使用 1.JFrame类的常用构造方法2.实例相关语法总结 前言 该文将较为详细地介绍了Swing组件中的JFrame窗体。JFrame窗体是大部分Swing组件的一个载体,这些组件都要在这…

C语言练习7(巩固提升)

C语言练习7 编程题 前言 “芳林新叶催陈叶,流水前波让后波。”改革开放40年来,我们以敢闯敢干的勇气和自我革新的担当,闯出了一条新路、好路,实现了从“赶上时代”到“引领时代”的伟大跨越。今天,我们要不忘初心、牢记…