Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2019 14:38:22

misha74
Зарегистрирован: 2019-01-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос про open cv py

Есть программа на 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:])  

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version