如何在findContours的边界框内裁剪图像

时间:2019-03-25 12:56:35

标签: python opencv image-processing

我通过找到Contours使用cv2.rectangle方法绘制了边界框。现在,我想裁剪每个边界框。

我尝试了切片方法来裁剪未提供所需结果的图像。它裁剪了其中没有任何边框的区域。

#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 :(得分:-1)

正如Piglet所说,先用y然后用x索引numpy数组。因此,只需交换这些即可解决问题。