如何解决使用预测框坐标裁剪图像
我使用detectron2来预测对象在图像中的位置。现在我正在尝试使用预测框来裁剪图像(在我的用例中,每个图像只检测到 1 个对象/框)。与我的问题相关的代码部分如下。问题是它只裁剪图像的左侧,但我需要它(显然)裁剪顶部、右侧和底部,以便裁剪到检测到的对象的形状。原始图像的形状为 (x,y,3),因此它们是 RGB 图像。我错过了什么?
from detectron2.utils.visualizer import ColorMode
import glob
imageName = "my_img.jpg"
im = cv2.imread(imageName)
outputs = predictor(im)
v = Visualizer(im[:,:,::-1],metadata=test_metadata,scale=0.8)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2_imshow(out.get_image()[:,::-1])
boxes = outputs["instances"].pred_boxes
boxes = list(boxes)[0].detach().cpu().numpy()
# extract the bounding box coordinates
(x,y) = (int(boxes[0]),int(boxes[1]))
(w,h) = (int(boxes[2]),int(boxes[3]))
crop_img = image[x:y+h,y:x+w]
cv2_imshow(crop_img)
我也尝试了以下方法,但它从顶部修剪了太多图像,并且根本没有修剪图像的右侧或底部。
from detectron2.data.transforms import CropTransform
ct = CropTransform(x,w,h)
crop_img = ct.apply_image(image)
cv2_imshow(crop_img)
玩弄它,我能够使用以下内容裁剪检测到的框周围的图像,但这并不理想,因为我必须对其进行硬编码。
crop_img = image[y-40:y+h-390,x:x+w-395]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。