2014-01-14 12 views
5

複数のバウンディングボックスを含む画像があります。
Books in Bounding BoxesOpenCV Pythonを使用してすべてのバウンディングボックスを抽出します

境界ボックスを持つものをすべて抽出する必要があります。これまでのところ、このサイトから私はこの答えを得ました:

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

それは動作しますが、それは1つだけを取得します。コードをどのように変更すればよいですか?私は輪郭のループに入れてみましたが、複数の画像ではなく1つの画像を吐き出しています。

ありがとうございます。そこ

答えて

16

あなたが行く:

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) 
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)