参数:
返回值:
cv2.HoughLineP():
参数:
返回值:
检测线段:
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()
检测圆形:
cv2.medianBlur():
参数解释:
src
:输入图像,8 位单通道或 3 通道图像。ksize
:滤波器大小,必须是正奇数,例如 3、5、7 等。(代表的是 Number x Number 大小的矩阵)dst
:输出图像,与输入图像大小和类型相同,可选参数。返回值:
dst
,则返回 dst
;否则,返回滤波后的图像。
cv2.HoughCircles():
参数:
image
:输入的单通道灰度图像。method
:表示使用的检测方法,目前只支持 cv2.HOUGH_GRADIENT
。dp
:累加器分辨率与图像分辨率的反比。这个参数影响圆心的累加器分辨率。如果 dp=1
,累加器的分辨率与图像的分辨率相同。如果 dp=2
,累加器的分辨率是图像分辨率的一半。一般来说,dp
值越大,检测速度越快,但可能会错过一些小圆;而 dp
值越小,检测速度越慢,但可以检测到更小的圆。minDist
:检测到的圆心之间的最小距离。如果这个距离小于该值,则认为是同一个圆。param1
:用于 Canny 边缘检测的高阈值。在进行圆检测之前,需要先进行边缘检测。这个参数用来设置 Canny 边缘检测算法的高阈值。低阈值是高阈值的一半。param2
:圆心累加器阈值。这个参数用于确定圆心的累加器阈值。只有当累加器的值大于 param2
时,才认为是一个圆。值越小,检测到的圆越多,但可能会有更多的误检测。minRadius
:圆的最小半径。maxRadius
:圆的最大半径。函数的返回结果是一个包含检测到的圆的信息的 Numpy 数组,每行包含三个元素:圆心的 x 坐标、y 坐标以及圆的半径。
cv2.circle():
参数解释:
img
:要绘制圆形的图像。center
:圆心的坐标,可以是一个元组 (x, y)
。radius
:圆的半径。color
:圆的颜色,可以是一个元组 (B, G, R)
,表示蓝、绿、红的通道值。thickness
:圆边界的厚度,如果为负值则表示填充整个圆形。1 import cv2 2 import numpy 3 4 img = cv2.imread('../images/planet_glow.jpg') 5 # 转灰度图 6 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 7 # 中值模糊 8 gray = cv2.medianBlur(gray, 5) 9 10 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 11 1, 90, 12 param1=100, param2=30, 13 minRadius=0, maxRadius=0) 14 15 circles = numpy.uint16(numpy.around(circles)) 16 17 for i in circles[0, :]: 18 # 绘制圆轮廓 19 cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2) 20 # 绘制圆心 21 cv2.circle(img, (i[0], i[1]), 1, (0, 0, 255), 2) 22 23 cv2.imshow('plant', img) 24 cv2.waitKey() 25 cv2.destroyAllWindows()
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!