Python + OpenCV = How to crop circle?

12,334

Solution 1

Its simple .. you need to get x,y co-ordinates of top right of rectangle and find with and height. Circles can be only enclosed in squares.

# given x,y are circle center and r is radius
rectX = (x - r) 
rectY = (y - r)
crop_img = self.img[y:(y+2*r), x:(x+2*r)]

Solution 2

After circles=cv2.HoughCircles(img,...)

if len(circles) == 1:
    x, y, r = circles[0][0]
    print x, y, r
    mask = np.zeros((w0,h0),dtype=np.uint8)
    cv2.circle(mask,(x,y),r,(255,255,255),-1,8,0)
    #cv2.imwrite(argv[2],mask)
    out = img*mask
    white = 255-mask
    cv2.imwrite(argv[2],out+white)
Share:
12,334
Stanislav Filin
Author by

Stanislav Filin

Updated on June 27, 2022

Comments

  • Stanislav Filin
    Stanislav Filin almost 2 years

    The below is the code:

    self.img = cv2.imread(image,)
    circle = cv2.HoughCircles(self.img, 3,
                              dp=1.5, minDist=1000, minRadius=100, maxRadius=1000)
    red = (0,0,255)
    x = circle[0][0][0]
    y = circle[0][0][1]
    r = circle[0][0][2]
    cv2.circle(self.img, (x, y), r, red, 2)
    
    
    
        x - X
        y - Y
        r - Radius
        For example: 521.25, 506.25, 318.919
    

    From the code how to crop the circle from the given example ?