gpt4 book ai didi

python - 霍夫圆示例误差和每个圆的访问半径

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:18 25 4
gpt4 key购买 nike

这是我第一次尝试图像处理,所以请多多包涵。我正在尝试运行以下 python example找到图像中的所有霍夫圆。但是,当我收到以下错误时:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/array.cpp, line 2482 Traceback (most recent call last): File "hough_circles.py", line 10, in param1=50,param2=30,minRadius=0,maxRadius=0) cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat

下面是我的代码:

import cv2
import cv2.cv as cv # here
import numpy as np

img = cv2.imread('opencv-logo.png',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

circles = cv2.HoughCircles(img,cv.CV_HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=0,maxRadius=0)

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

这是 opencv-logo.jpg我正在尝试使用的图像。你能帮我运行这个例子并指导我完成循环遍历每个找到的圆的半径的过程吗?

谢谢

最佳答案

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type)

HoughCircles 期望一个 numpy 数组作为它的第一个参数。上面的错误说明没有获取到。问题是您的输入文件是 jpg 而代码要求的是 png:

img = cv2.imread('opencv-logo.png',0)

当文件不存在时,cv2.imread 悄悄返回一个None。因此,img 设置为 None。当 cv2.HoughCircles 接收该值作为其第一个参数时,它会引发错误。

要解决问题,请将上面的行替换为:

img = cv2.imread('opencv-logo.jpg',0)

通过该更改,您的代码会运行,找到许多潜在的圈子,并生成图像:

enter image description here

您可以通过更改各种参数来控制找到的圆圈数。例如,将 canny 参数增加到 70 和 50 会将找到的圆圈数减少到七个。

关于python - 霍夫圆示例误差和每个圆的访问半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com