import cv2
import numpy as np

# read webcam
webcam = cv2.VideoCapture(0)

# visualize webcam

while True:
    ret, frame = webcam.read()

    Blur = cv2.medianBlur(frame,3)
    dimensions = frame.shape
    
    grayimg = cv2.cvtColor(Blur, cv2.COLOR_BGR2GRAY)
    circles = cv2.HoughCircles(grayimg, cv2.HOUGH_GRADIENT,1.2,dimensions[0]/50)

    thickness = 2
    #Draw detected circles
    if circles is not None:
        print("Found circle")
        circles = np.uint16(circles[0,:])
        #print(circles)
        print(type(circles.shape))
        for (x, y, diameter) in circles:
            #draw the outer circle
            cv2.circle(frame, (x,y), diameter, (0,0,255), thickness, cv2.LINE_AA)
            #draw the outer circle
            cv2.circle(frame, (x,y), 2, (0,0,255), thickness, cv2.LINE_AA)
        cv2.putText(frame, 'Total Circles: ' + str(circles.shape[0]), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 4)
        
    else:
        print("Cannot detect circle.")

    cv2.imshow('frame', frame)
    if cv2.waitKey(40) & 0xFF == ord('q'):
        break



webcam.release()
cv2.destroyAllWindows()