首页 > 编程语言 >【Python】【OpenCV】检测直线和圆

【Python】【OpenCV】检测直线和圆

时间:2023-12-07 22:33:39浏览次数:42  
标签:直线 img Python lines cv2 OpenCV edges 检测

 重新理解一下Canny方法:

参数:

  • image:输入的图像。
  • threshold1:第一个阈值,用于检测边缘的强度梯度的下限。
  • threshold2:第二个阈值,用于检测边缘的强度梯度的上限。
  • apertureSize:Sobel算子的大小,可选值为3、5、7,默认值为3。
  • L2gradient:一个布尔值,指示是否使用更精确的L2范数计算梯度幅值,默认值为False。

返回值:

  • edges:包含边缘的输出图像。它是一个二进制图像,其中白色像素表示检测到的边缘,黑色像素表示未检测到的边缘。

 

cv2.HoughLineP():

参数:

  • image:输入的二值图像,通常是经过边缘检测的结果。
  • rho:极径步长,表示以像素为单位的距离精度。一般情况下,使用1即可。
  • theta:极角步长,表示以弧度为单位的角度精度。一般情况下,使用np.pi/180即可。
  • threshold:直线投票阈值,只有当累积器中的值高于该阈值时,才会被认为是一条直线。
  • minLineLength:线段的最小长度。比这个长度短的线段不会被检测到。
  • maxLineGap:允许两条线段之间的最大间隔,小于该值则被视为一条线段。

返回值:

  • lines:检测到的直线的参数表示。它是一个包含直线的起点和终点坐标的数组,每个直线由四个浮点数(x1, y1, x2, y2)表示。

 

 1 import cv2
 2 import numpy as np
 3 
 4 img = cv2.imread('../images/lines.jpg')
 5 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 6 
 7 # 寻找边缘
 8 edges = cv2.Canny(gray, 50, 120)
 9 
10 # 寻找直线
11 lines = cv2.HoughLinesP(edges, rho=1,
12                         theta=np.pi/180.0,
13                         threshold=20,
14                         minLineLength=50,
15                         maxLineGap=5)
16 
17 # lines此时是一个三维数组
18 for line in lines:
19     # line此时即为二维数组,且只有一个元素(只包含一个一维数组)
20     x1, y1, x2, y2 = line[0]
21     cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
22 
23 cv2.imshow("edges", edges)
24 cv2.imshow("lines", img)
25 cv2.waitKey()
26 cv2.destroyAllWindows()

 

标签:直线,img,Python,lines,cv2,OpenCV,edges,检测
From: https://www.cnblogs.com/vangoghpeng/p/17884029.html

相关文章

  • 聪明办法学python第5次笔记打卡
    Debugging关于debug的方法1.使用print语句打印变量的值2.使用assert语句判断程序的错误3.使用pdb模块,(Python的调试器)可以在程序中设置断点,单步调试4.使用IDE的内置调试器5.向人工智能求助常见错误1.缩进错误切忌tab和空格混用2.语法错误3.命令错误使用了未定义的函......
  • 聊聊如何为python程序 debug
    开始调试之前摆正心态一、调理论的简单介绍1、调试理论“软件”的两层含义·人类需求在信息世界的投影    理解错需求→bug·计算过程的精确(数学)描述     实现错误→bug2、调试困难的根本原因因为bug的触发经历了漫长的过程·需求→设计→代码(状态机)→F......
  • python notebook
    python(11.20--12.7)配置python环境:下载:anaconda在清华大学开源软件镜像站中选择合适的镜像进行下载。anaconda的存在和作用:要使用anaconda不妨先了解anaconda是什么,做什么。首先要知道,anaconda的存在必然有其存在的社会条件,现如今的python拥有众多版本,他们可以满足使用者不......
  • 聪明办法学python(5)
    聪明办法学python(5)debug调试方法print调试:将程序分段后添加print,锁定问题发生地assert调试:表达式是否成立ide调试:查看报错CV工程师:向人工智能求助常见报错缩进错误(IndentationError)切忌tab和空格混用语法错误(GrammarError)命令错误(CommandError)使用了未定义的函数......
  • Python NumPy 数组索引和切片
    1、普通索引普通索引是指使用单个整数或整数列表来索引数组中的元素。1)单个元素索引要访问NumPy数组的单个元素,可以使用单个整数索引。索引从0开始,表示数组的第一行第一个元素。2)多维元素索引2、高级索引高级索引允许使用布尔值或数组来索引数组中的元素。1)布尔索引布......
  • python-文件操作
    一、文件的概念文件的操作一共分三个步骤打开文件读写文件读,将文件内容写入内存写,将内存内容写入文件关闭文件     操作文件的函数/方法 1、read方法---读取文件#1、打开文件----注意大小写file=open(文件路径,mode="",encoding=......
  • HTTPS 请求中的证书验证详解(Python版)
    在网络通信中,HTTPS是一种通过SSL/TLS加密的安全HTTP通信协议。证书在HTTPS中扮演着至关重要的角色,用于验证服务器身份并加密数据传输。本文将深入探讨Python中HTTPS请求中的证书相关内容,并提供详细的代码示例。1.证书的基本概念SSL/TLS证书是一种由证书颁发机构签发的......
  • ###聪明办法学python Task07:debug调试
    debug的调试1.调试理论的简单介绍在计算机中,我们将机器看作状态机,同时我们遵循计算机不会犯错的原则,因此,如果程序运行不对劲,好好想想是不是自己的问题2.看懂报错信息编译器的报错要看懂,看不懂用翻译调试方法1.print调试:将程序分段后添加print,锁定问题发生地2.assert调试:表......
  • “数组”类型(python中都可[]的一些数据类型)
    “数组”类型(python中都可[]的一些数据类型)list特点是可变的、能动态扩容,可存储Python中的一切对象,使用时不用指定存储的元素的类型。>>>arr=["one","two","three"]>>>arr[0]'one'#动态扩容>>>arr.append(4)>>>arr['one',......
  • 聪明办法学Python(Debug)
    前言:尽可能的将bug在设计时变得更容易暴露出来,将某些关键的步骤进行可能的可视化。(print,assert)调试1调试理论的简单介绍bug的触发过程:需求--设计--代码--fault--error--failure2看懂报错信息3利用print方法调试程序4利用assert方法调试程序assert:后面举一个条件,如果不......