Одноклассник и я работаем над счетчиком монет с помощью обработки изображений. Мы использовали два метода, чтобы распознать монеты как круги. С одной стороны, связанные компоненты со статистикой, а с другой - преобразование Хафа. Преимуществом CC w / Stats является прямой вывод всех важных параметров (например, площади пикселей). Тем не менее, CC имеет более слабые характеристики при касании монет на изображении (центр монеты распознан неправильно). Hough Transformation не имеет этой проблемы и легко распознает каждый круг правильно. Однако мы не знаем, как использовать здесь данные обнаруженных объектов. Так есть ли способ вывести данные с помощью другой функции или есть способ генерировать гибридный код из CC с помощью Stats and Hough Transformation?
import cv2
import numpy as np
import matplotlib.pyplot as plt
image='17.png'
img=cv2.imread(image,1)
img_orig=img.copy()
img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img=cv2.GaussianBlur(img,(21,21),cv2.BORDER_DEFAULT)
all_circs=cv2.HoughCircles(img, cv2.HOUGH_GRADIENT,1,500,param1=110,param2=35,minRadius=200,maxRadius=600)
all_circs_rounded=np.uint32(np.around(all_circs))
count = 1
for i in all_circs_rounded[0, :]:
cv2.circle(img_orig,(i[0],i[1],),i[2],(255,0,0),3)
cv2.circle(img_orig,(i[0],i[1],),2,(255,0,0),3)
cv2.putText(img_orig,"Coin"+str(count),(i[0]-70,i[1]+30),cv2.FONT_HERSHEY_SIMPLEX,1.1,(255,0,0),2)
count+=1
print (all_circs_rounded)
print (all_circs_rounded.shape)
print ('I have found ' + str(all_circs_rounded.shape[1]) + ' coins')
plt.rcParams["figure.figsize"]=(16,9)
plt.imshow(img_orig)