Вот простое изображение с каплями того же размера и четких границ, что и изображение в оттенках серого. Почему приведенный ниже код не находит эти круги?
ret,thresh1 = cv2.threshold(img,180,250,cv2.THRESH_BINARY)
thresh1 = cv2.blur(thresh1,(15,15))
circles = cv2.HoughCircles(thresh1,cv2.HOUGH_GRADIENT, 2, np.shape(thresh1)[0]/8, param1=200, param2=10)
if circles is not None:
plt.imshow(np.flipud(thresh1), origin='lower', cmap='bone')
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
currentAxis = plt.gca()
currentAxis.add_patch(Circle((i[0] , i[1]), i[2],fill=False,color='red'))
currentAxis.add_patch(Circle((i[0] , i[1]), 8,fill=True,color='green'))
plt.show()
Вывод, который я получил, следующий:
У меня есть попробовал настроить параметры param1 и param2. Либо я получу ложные срабатывания (более того), либо вообще ничего! Параметр минимального расстояния устанавливается равным 1/8 ширины изображения только как произвольное значение.
Вот простое изображение с каплями того же размера и четких границ, что и изображение в оттенках серого. Почему приведенный ниже код не находит эти круги? [code]ret,thresh1 = cv2.threshold(img,180,250,cv2.THRESH_BINARY) thresh1 = cv2.blur(thresh1,(15,15)) circles = cv2.HoughCircles(thresh1,cv2.HOUGH_GRADIENT, 2, np.shape(thresh1)[0]/8, param1=200, param2=10) if circles is not None: plt.imshow(np.flipud(thresh1), origin='lower', cmap='bone') circles = np.uint16(np.around(circles)) for i in circles[0,:]: currentAxis = plt.gca() currentAxis.add_patch(Circle((i[0] , i[1]), i[2],fill=False,color='red')) currentAxis.add_patch(Circle((i[0] , i[1]), 8,fill=True,color='green')) plt.show() [/code] [img]https://i.sstatic.net/zFDvs.jpg[/img]
Вывод, который я получил, следующий: [img]https://i.sstatic.net/L6DXI.png[/img]
У меня есть попробовал настроить параметры param1 и param2. Либо я получу ложные срабатывания (более того), либо вообще ничего! Параметр минимального расстояния устанавливается равным 1/8 ширины изображения только как произвольное значение.