Можно ли использовать функцию cv2.HoughCircles для нескольких изображений? - PullRequest
1 голос
/ 11 мая 2019

Большинство источников предоставляют свои коды, которые обнаруживают круги только для одного изображения. Можно ли обнаружить круги для нескольких изображений? Если да, то как мне быть? Если нет, то почему это невозможно?

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)

и когда я запускаю этот код, я получаю эту ошибку. Может ли кто-нибудь помочь объяснить, что это значит?

ошибка: OpenCV (4.1.0) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ hough.cpp: 1736: ошибка: (-215: утверждение не выполнено)! _Image.empty () && _image.type () == CV_8UC1 && (_image.isMat () || _image.isUMat ()) в функции 'cv :: HoughCircles'

1 Ответ

2 голосов
/ 11 мая 2019

Сообщение об ошибке говорит вам, что ваше изображение пустое, или оно не в градациях серого, или это не изображение 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...