Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Can't detect the circle

I tried using the function cv2.HoughCircles but it doesnt detect the hand drawn circle on the paper. Can anybody help me with this?


enter code here
import numpy as np
import imutils
import cv2

image = cv2.imread("images/136_5cm.png")
output = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#gray = cv2.GaussianBlur(gray, (5, 5), 0)
# detect circles in the image
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.4 ,100,)
# ensure at least some circles were found
if circles is not None:
    # convert the (x, y) coordinates and radius of the circles to integers
    circles = np.round(circles[0, :]).astype("int")

    # loop over the (x, y) coordinates and radius of the circles
    for (x, y, r) in circles:
        # draw the circle in the output image, then draw a rectangle
        # corresponding to the center of the circle, (x, y), r, (0, 255, 0), thickness=4, lineType=8, shift=0)
        cv2.rectangle(output, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1)

    # show the output image
    cv2.imshow("output", np.hstack([image, output]))