複数の境界ボックスを含む画像があります。
境界ボックスが含まれているものをすべて抽出する必要があります。これまでのところ、このサイトから私はこの答えを得ました:
y = img[by:by+bh, bx:bx+bw]
cv2.imwrite(string + '.png', y)
動作しますが、取得できるのは1つだけです。コードを変更するにはどうすればよいですか?輪郭のループに入れてみましたが、複数の画像ではなく1つの画像が出力されます。
よろしくお願いします。
そこに行きます:
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)