Как обрезать изображения внутри ограничительной рамки из findContours - PullRequest
0 голосов
/ 25 марта 2019

Я построил ограничивающую рамку, используя метод cv2.rectangle, найдя Contours. Теперь я хочу обрезать каждую ограничивающую рамку.

Я пробовал использовать метод нарезки изображений, который не дал мне желаемого результата. Он обрезал области, в которых нет никаких ограничительных рамок.

#Plotting rectangular box
ret,thresh = cv2.threshold(dilation, 127,255,0)
image, contours,hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE )

for c in contours:
    rect = cv2.boundingRect(c)
    if rect[2] < 100 or rect[3] < 100 : continue
    print (cv2.contourArea(c))
    x,y,w,h = rect

    crop_img = img[x:x+w, y:y+h] #Cropping
    cv2.imwrite("Cropped/"+str(enumerate(c))+".jpg", crop_img)

    cv2.rectangle(im_new,(x,y),(x+w,y+h),(0,255,0),2)

cv2.imwrite('sample_res_inner.jpg',im_new)
cv2.waitKey()  
cv2.destroyAllWindows()

Какие изменения можно внести в код для получения желаемого результата?

1 Ответ

0 голосов
/ 25 марта 2019

Как говорит Пятачок, массивы с номерами индексируются как y, а затем x.Так что просто поменяйте их местами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...