python opencv 直线检测

直线检测

前期准备

import cv2
import numpy as np

# 读取图片
img = cv2.imread(r"C:\Users\HONOR\Desktop\12.png")
# 灰度转换
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
# reg, img = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 显示二值化后的图像
# cv2.imshow("thresh", img)

canny边缘检测

在进行检测直线之前需要进行边缘检测

# 检测直线
# 首先进行边缘检测
canny = cv2.Canny(gray, 30, 150)
  • 语法格式:

    cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges
    
    - image:输入图像,必须为单通道灰度图像;
    - threshold1:第一个阈值,用于边缘连接;
    - threshold2:第二个阈值,用于边缘检测;
    - edges:输出的边缘图像;
    - apertureSize:Sobel 算子的大小,可选值为 357,默认值为 3- L2gradient:是否使用 L 2 L_2L 2范数计算梯度大小,可选值为 TrueFalse,默认值为 False

直线检测

# 使用霍夫变换来得出直线的检测结果
# 霍夫变换进行直线检测
lines = cv2.HoughLines(canny, 1, np.pi / 180, 180)
lines1 = lines[:, 0, :]
for rho, theta in lines1[:]:
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho
    x1 = int(x0 + 3000 * (-b))
    y1 = int(y0 + 3000 * (a))
    x2 = int(x0 - 3000 * (-b))
    y2 = int(y0 - 3000 * (a))
    cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)
  • 语法格式:
cv.HoughLines(image, rho, theta, threshold[, lines[, srn[, stn[, min_theta[, max_theta]]]]]) -> lines

- lines:数组,每一个元素都是一条直线对应的(ρ, θ),ρ以像素为单位,θ以弧度为单位。
- image:输入图像,需要是二值图像,所以在应用hough变换之前应用阈值或canny边缘检测。
- rho:ρ的精度。
- theta:θ的精度。
- threshold:阈值,得票数高于该值的线才被认为是线,由于投票数取决于线上的点数,所以它代表了应该被检测到的线的最小点数。

显示结果

cv2.imshow("Hough Transform Result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/503616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码+视频,手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)

校准曲线图表示的是预测值和实际值的差距,作为预测模型的重要部分,目前很多函数能绘制校准曲线。 一般分为两种,一种是通过Hosmer-Lemeshow检验,把P值分为10等分,求出每等分的预测值和实际值的差距. 另外一种是calibra…

Adaboost集成学习 | Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | 基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)基于SVM(支持向量机)和AdaBoost集成学习的时间序列预测(如股票价格预测)是一种结合了两种强大机器学习算…

【Frida】【Android】工具篇:ZenTracer

🛫 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

如何使用 ChatGPT 进行编码和编程

文章目录 一、初学者1.1 生成代码片段1.2 解释功能 二、自信的初学者2.1 修复错误2.2 完成部分代码 三、中级水平3.1 研究库3.2 改进旧代码 四、进阶水平4.1 比较示例代码4.2 编程语言之间的翻译 五、专业人士5.1 模拟 Linux 终端 总结 大多数程序员都知道,ChatGPT …

mac+win10虚拟机+phpstudy便捷运行php+pgsql的方法

痛点:mac下要搭建nginxphp(含pdo_pgsql)pgsql比较麻烦 另类解决方法: 前提:mac下需要已安装win10虚拟机 方法: 1. win10虚拟机下安装phpstudy8.1 -> 开启php扩展(pdo_pgsql)&a…

竞赛 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

荣誉 | 人大金仓连续三年入选“金融信创优秀解决方案”

3月28日,由中国人民银行领导,中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布“第三期金融信创优秀解决方案”,人大金仓新一代手机银行系统解决方案成功入选,这也是人大金仓金融行业解决方案连续第三年获得用户认可。…

OSI七层参考模型

osi即开放系统互联参考模型。 osi的目的是为了解决主机间的通信 从下到上:物理层、数据链路层、网络层、传输层、会话层、表示出、应用层 上三层(应用层、表示出、会话层)负责产生数据,下四层(传输层、网络层、数据…

类加载 双亲委派 内存模型 对象内存分配 逃逸分析学习记录

类加载双亲委派 main方法运行过程 C语言实现的java.exe来创建jvm,和引导类加载器,并由引导类加载器来创建类加载器的启动器launcher,在类加载器启动器空参构造中就对剩下的拓展类加载器,应用程序加载器,和自定义加载器来进行了加…

前端第一天练习

一、安装Node.js和搭建前端环境 安装 Node.js:访问 Node.js 官网 下载并安装最新版本的 Node.js。 LTS 为长期稳定的版本, Current 为新特性尝鲜版本, 可能存在隐藏的 bug 或者安全漏洞打开终端, 在终端输入命令 node -v后, 即可查看已安装的 Node.js 版本号 使用 …

JWFD流程图转换为矩阵数据库的过程说明

在最开始设计流程图的时候,请务必先把开始节点和结束节点画到流程图上面,就是设计器面板的最开始两个按钮,先画开始点和结束点,再画中间的流程,然后保存,这样提交到矩阵数据库就不会出任何问题,…

linux命令之tput

1.tput介绍 linux命令tput是可以在终端中进行文本和颜色的控制和格式化,其是一个非常有用的命令 2.tput用法 命令: man tput 3.样例 3.1.清除屏幕 命令: tput clear [rootelasticsearch ~]# tput clear [rootelasticsearch ~]# 3.2.…

32-2 APP渗透 - 移动APP架构

前言 app渗透和web渗透最大的区别就是抓包不一样 一、客户端: 反编译: 静态分析的基础手段,将可执行文件转换回高级编程语言源代码的过程。可用于了解应用的内部实现细节,进行漏洞挖掘和算法分析等。调试: 排查软件错误的一种手段,用于分析应用内部原理和行为。篡改/重打…

数据分析之POWER Piovt透视表分析

将几个数据表之间进行关联 生成数据透视表 超级透视表这里的字段包含子字段 这三个月份在前面的解决办法 1.选中这三个月份,鼠标可移动的时候移动到后面 2.在原数据进行修改 添加列获取月份,借助month的函数双击日期 选择月份这列----按列排序-----选择月…

wps斜线表头并分别打字教程

wps斜线表头怎么做并分别打字: 1、首先选中我们想要设置的表头。 2、接着右键选中它,点击“设置单元格格式” 3、然后点击上方“边框”选项卡。 4、随后选择图示的斜线,点击“确定” 5、设置完成后,我们只要在其中打字就可以在斜…

UniFace:深度人脸识别的统一交叉熵损失

UniFace: Unified Cross-Entropy Loss for Deep Face Recognition softmax损失 缺点:不能保证最小正样本类相似度大于最大负样本类相似度 问题:没有统一的阈值可用于将正样本与类对与负样本与类对分开 创新点 设计了用于人脸识别模型训练的UCE&#xf…

设计模式之装饰模式精讲

概念:动态地给一个对象添加一些额外的职责。 装饰器模式侧重于在不改变接口的前提下动态地给对象添加新功能,保持对象结构的透明性,客户端无感知。 以一个咖啡制作和装饰的例子来帮助大家理解: public interface Coffee {double…

汽车租赁(源码+文档)

汽车租赁(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端登录界面首页订单个人信息我的界面新手指引注册界面车型选择支付界面修改信息 管理端用户管理订单管理分类管理 文件包含内容 1、搭建视频 2、流程图 3、开题报告 …

校园招聘管理系统(源码+文档)

校园招聘管理系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端热门岗位校园招聘首页个人简历添加个人简历我的界面注册界面查看个人简历界面个人资料界面登录界面消息界面退出登录 管理端登录界面![请添加图片描述](htt…

【shell】select in实现终端交互场景

文章目录 序言1. select in语句及其语法2. select in和case语句相结合3. 执行界面示例 序言 shell脚本实现简单的终端交互功能,根据用户不同输入执行不同功能脚本 1. select in语句及其语法 select in是shell独有的一种循环,非常适合终端交互场景 该语…
最新文章