python - 是否可以对多个图像使用 cv2.HoughCircles 函数?

标签 python opencv

大多数来源提供的代码只能检测一张图片的圆圈。是否可以检测多个图像的圆圈?如果是,我该怎么办?如果不是,为什么不可能?

for img in os.listdir(path):  
        img_array = cv2.imread(os.path.join(path,img)) 
        circles = cv2.HoughCircles(img_array,cv2.HOUGH_GRADIENT,1,10,param1=50,param2=12,minRadius=0,maxRadius=10)

当我运行这段代码时,我得到了这个错误。谁能帮忙解释一下这是什么意思?

error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgproc\src\hough.cpp:1736: error: (-215:Assertion failed) !_image.empty() && _image.type() == CV_8UC1 && (_image.isMat() || _image.isUMat()) in function 'cv::HoughCircles'

最佳答案

错误消息告诉您您的图像是空的,或者它不是灰度图像,或者它不是 OpenCV 图像。最有可能是第二个。 HoughCircles 函数仅适用于灰度图像,您需要在使用前将图像转换为灰色:

for img in os.listdir(path):  
        img_array = cv2.imread(os.path.join(path,img)) 
        img_gray = cv2.cvtColor(img_array, cv2.COLOR_BGR2GRAY)
        circles = cv2.HoughCircles(img_gray,cv2.HOUGH_GRADIENT,1,10,param1=50,param2=12,minRadius=0,maxRadius=10)

关于python - 是否可以对多个图像使用 cv2.HoughCircles 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089222/

相关文章:

Python:创建新的数据框列,显示相对于其他列值的排名

python - 什么更有效地迭代列表并调用函数或将列表传递给函数

python - 在 python 中将前导零添加到十六进制值

python - YoutubeDL - 下载完成后如何获取状态对象

opencv - 如何消除给定图像中的噪点,以使ocr输出完美?

python - 为什么 find_objects 会给出一堆无,然后是整个图像的范围?

python - 处理数组 : how to avoid a "for" statement

c++ - 检查匹配图像是否与opencv相同大小

java - 使用opencv 3.0 java裁剪检测到的人脸

java - 使用 jni 将位图从 android 相机传递到 C++