如何在python opencv中简单地裁剪边界框[重复]

Posted

技术标签:

【中文标题】如何在python opencv中简单地裁剪边界框[重复]【英文标题】:How to simple crop the bounding box in python opencv [duplicate] 【发布时间】:2020-07-07 04:57:48 【问题描述】:

我正在尝试通过测试一些用例来学习 opencv 并实施一个研究项目。我正在尝试使用 python opencv 裁剪图像内部的边界框。我已成功创建边界框,但裁剪失败

这是图片

import cv2
import matplotlib.pyplot as plt
img = cv2.imread("Segmentacion/Img_183.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    
dst = cv2.Canny(gray, 0, 150)
blured = cv2.blur(dst, (5,5), 0)    
MIN_CONTOUR_AREA=200
img_thresh = cv2.adaptiveThreshold(blured, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
Contours,imgContours = cv2.findContours(img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in Contours:
    if cv2.contourArea(contour) > MIN_CONTOUR_AREA:
        [X, Y, W, H] = cv2.boundingRect(contour)
        box=cv2.rectangle(img, (X, Y), (X + W, Y + H), (0,0,255), 2)

cropped_image = img[X:W, Y:H]
print([X,Y,W,H])
cv2.imwrite('contour.png', cropped_image )

【问题讨论】:

【参考方案1】:

我想出了从原始图像中裁剪边界框的公式

cropped_image = img[Y:Y+H, X:X+W]
print([X,Y,W,H])
plt.imshow(cropped_image)
cv2.imwrite('contour1.png', cropped_image)

【讨论】:

以上是关于如何在python opencv中简单地裁剪边界框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在每一行上绘制单个边界框,裁剪边界框并将图像保存在文件夹 opencv python

opencv-python:如何用边界框坐标裁剪图像[重复]

如何在Word周围绘制边界框并将其保存在文件夹opencv python中

Opencv和python用于自动裁剪

opencv-python:为啥检测到不正确的边界框(几个边界框)?

Opencv createsamples 实用程序:紧密边界框会用未裁剪的图像代替正样本吗?