Форум сайта python.su
Есть программа на python с open cv которая распознает кол.кругов на кубиках
но есть проблема, я не могу посчитать сколько кругов в каждом кубике, а только сумму итого.
Как мне это сделать?
import sys import cv2 as cv import numpy as np from collections import Counter from glob import glob def main(argv): ## [load] default_file = 'opencv_frame_6.png' filename = argv[0] if len(argv) > 0 else default_file sum = 0 # Loads an image src = cv.imread(cv.samples.findFile(filename), cv.IMREAD_COLOR) # Check if image is loaded fine if src is None: print ('Error opening image!') print ('Usage: hough_circle.py [image_name -- default ' + default_file + '] \n') return -1 ## [load] ## [convert_to_gray] # Convert it to gray gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) ## [convert_to_gray] ## [reduce_noise] # Reduce the noise to avoid false circle detection gray = cv.medianBlur(gray, 5) ## [reduce_noise] ## [houghcircles] rows = gray.shape[0] circles = cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, rows / 15, param1=100, param2=28, minRadius=59, maxRadius=130) circles1 = cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, rows / 21, param1=150, param2=28, minRadius=1, maxRadius=50)## [houghcircles] ## [draw] if circles is not None: circles = np.uint16(np.around(circles)).astype("int") color_red = (0,0,255) for i in circles[0, :]: center = (i[0], i[1]) # circle center cv.circle(src, center, 1, (0, 100, 100), 3) # circle outline radius = i[2] cv.circle(src, center,radius,(255, 0, 255), 3) if circles1 is not None: circles1 = np.uint16(np.around(circles1)).astype("int") color_red = (0,0,255) for i in circles1[0, :]: center = (i[0], i[1]) # circle center cv.circle(src, center, 1, (0, 100, 100), 3) # circle outline radius = i[2] cv.circle(src, center, radius, (255, 0, 255), 3) ## [draw] ## [display] cv.imshow("detected circles", src) print (circles) print (circles1) #print (len(circles[0])) #print (len(circles1[0])) cv.waitKey(0) ## [display] return 0 if __name__ == "__main__": main(sys.argv[1:])
Офлайн