123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import cv2
- import numpy as np
- # define a video capture object
- vid = cv2.VideoCapture(0)
- while(True):
- # Capture the video frame
- # by frame
- ret, frame = vid.read()
- # Convert to grayscale.
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- # Blur using 3 * 3 kernel.
- gray_blurred = cv2.blur(gray, (3, 3))
- # Apply Hough transform on the blurred image.
- detected_circles = cv2.HoughCircles(gray_blurred,
- cv2.HOUGH_GRADIENT, 1, 1000, param1 = 60,
- param2 = 30, minRadius = 100, maxRadius = 200)
- # Draw circles that are detected.
- if detected_circles is not None:
- # Convert the circle parameters a, b and r to integers.
- detected_circles = np.uint16(np.around(detected_circles))
- for pt in detected_circles[0, :]:
- a, b, r = pt[0], pt[1], pt[2]
- # Draw the circumference of the circle.
- cv2.circle(frame, (a, b), r, (0, 255, 0), 2)
- # Draw a small circle (of radius 1) to show the center.
- cv2.circle(frame, (a, b), 1, (0, 0, 255), 3)
- # Display the resulting frame
- cv2.imshow('frame', frame)
- # the 'q' button is set as the
- # quitting button you may use any
- # desired button of your choice
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- # After the loop release the cap object
- vid.release()
- # Destroy all the windows
- cv2.destroyAllWindows()
|