Extract all bounding rectangles using OpenCV Python

I have an image that contains more than one bounding box.
Books in Bounding Boxes

I need to extract everything that has bounding rectangles in them. So far from this site I have received this answer:

y = img[by:by+bh, bx:bx+bw] cv2.imwrite(string + '.png', y) 

It works, however, it only gets one. How do I change the code? I tried to put it in an outline for outlines, but it still displays one image instead of several.

Thank you so much in advance.

+9
source share
1 answer

go

 import cv2 im = cv2.imread('c:/data/ph.jpg') gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) contours, hierarchy = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)[-2:] idx =0 for cnt in contours: idx += 1 x,y,w,h = cv2.boundingRect(cnt) roi=im[y:y+h,x:x+w] cv2.imwrite(str(idx) + '.jpg', roi) #cv2.rectangle(im,(x,y),(x+w,y+h),(200,0,0),2) cv2.imshow('img',im) cv2.waitKey(0) 
+21
source

All Articles