使用 grabcut (python) 后查找图像中对象的坐标
find coordinate of object in a image after using grabcut (python)
我有很多龙虾图片(背景相同)。
我的目标是测量每只龙虾的大小。
为此,我使用 Grabcut 从背景中提取主要对象(龙虾)。但是,在这一步之后,我不知道如何找到提取对象的坐标以进行裁剪。我需要裁剪对象以支持尺寸测量。
不知道是不是:
- 我们有任何直接的方法只将提取的对象保存到新图像(刚好适合对象的大小),或者
- Grabcut 后找到它的坐标。
如果我们没有以上任何一项,如果您告诉我有关从 Grabcut 输出中进行对象裁剪的其他方法,我将不胜感激。
这是原图
这是Grabcut后的输出图
输出图像仍然与原始图像大小相同。
我需要将提取的对象保存到适合对象大小的新图像中。
你需要一些来自 OpenCV 库的叫做 min Bounding Rectangle 的东西。它形成了一个最小的矩形,并给出了矩形的坐标。
边界矩形:给出未旋转的矩形(绿色矩形)
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
Rotated Bounding Rect : 它给出了旋转的边界矩形(红色矩形)
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(img,[box],0,(0,0,255),2)
Image from OpenCV
在此之后,您可以获取坐标并提取带有龙虾的矩形。
我有很多龙虾图片(背景相同)。
我的目标是测量每只龙虾的大小。
为此,我使用 Grabcut 从背景中提取主要对象(龙虾)。但是,在这一步之后,我不知道如何找到提取对象的坐标以进行裁剪。我需要裁剪对象以支持尺寸测量。
不知道是不是:
- 我们有任何直接的方法只将提取的对象保存到新图像(刚好适合对象的大小),或者
- Grabcut 后找到它的坐标。
如果我们没有以上任何一项,如果您告诉我有关从 Grabcut 输出中进行对象裁剪的其他方法,我将不胜感激。
这是原图
这是Grabcut后的输出图
输出图像仍然与原始图像大小相同。
我需要将提取的对象保存到适合对象大小的新图像中。
你需要一些来自 OpenCV 库的叫做 min Bounding Rectangle 的东西。它形成了一个最小的矩形,并给出了矩形的坐标。
边界矩形:给出未旋转的矩形(绿色矩形)
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
Rotated Bounding Rect : 它给出了旋转的边界矩形(红色矩形)
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(img,[box],0,(0,0,255),2)
Image from OpenCV
在此之后,您可以获取坐标并提取带有龙虾的矩形。