opencv 如何通过标注数据裁剪图像?

pobjuy32  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(126)

我正在尝试写一个Python脚本,将裁剪图像的注解数据。有人能帮助我吗?
图片:

注解数据:
0 0.514583 0.716204 0.136458 0.102778加拿大

4c8rllxm

4c8rllxm1#

提及的YOLO坐标的格式为:x_center,y_center,width_box,height_box,标准化wrt图像高度和宽度。您可以使用以下命令将其转换为绘制矩形的标准/常用格式:

x = x_center * image_width
y = y_center * image_height
w = width_box * image_width
h = height_box * image_height

如果您希望边框格式为:x最小值、y最小值、x最大值、y最大值,然后:

xmin = int(x - width_box/2)
ymin = int(y - height_box/2)
xmax = int(x + width_box/2)
ymax = int(y + height_box/2)
xu3bshqb

xu3bshqb2#

你可以这样做〉〉

import cv2, os

image = cv2.imread('/file/path.ext')
lh,lw,_ = image.shape

# now take your coordinates
x,y,w,h = 0.514583, 0.716204, 0.136458, 0.102778
x,y,w,h = int(x*lw), int(y*lh), int(w*lw), int(h*lh) ## to match the bounding box coordinates with actual width, height

boxedImage = image[y:y+h, x:x+w]
cv2.imshow(boxedImage)

希望这有帮助!

相关问题