使用grabcut(python)

时间:2018-01-02 02:45:01

标签: python image-processing crop

我有很多龙虾图像(背景相同)。

我的目标是测量每只龙虾的大小。

为此,我使用Grabcut从背景中提取主要对象(龙虾)。但是,在此步骤之后,我不知道如何找到提取对象的坐标以进行裁剪。我需要裁剪对象以支持尺寸测量。

我不知道是否:

  • 我们有任何直接方法只将提取的对象保存到新图像(只是符合对象的大小),或者
  • 在做Grabcut后找到它的坐标。

如果我们没有上述任何一种,如果你告诉我其他方法从Grabcut输出做对象裁剪,我会很感激。

这是原始图片 This is original image

这是Grabcut之后的输出图像 This is the output image after Grabcut.

输出图像的大小仍与原始图像相同。

我需要将提取的对象保存到适合对象大小的新图像。

1 个答案:

答案 0 :(得分:0)

你需要一些来自OpenCV Library的名为min Bounding Rectangle的东西。它形成一个最小的矩形,并给出矩形的坐标。

Bounding Rect:它给出了未旋转的矩形(绿色矩形)

x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

旋转边界矩形:它给出旋转的边界矩形(红色矩形)

rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(img,[box],0,(0,0,255),2)

Image from OpenCV

在此之后,您可以获取坐标并使用龙虾提取矩形。