首页 > 解决方案 > 如何使用yolo格式图像坐标裁剪图像

问题描述

问候 stackoverflow 社区,我有 200 张带有自定义模型标签txt文件的图像。 现在我想使用坐标裁剪这些图像中存在的所有头部。 我试过了。 但我收到错误。 你能帮我自动裁剪这些图像的所有头部吗?yolo
txt
opencv

图像1

img2

请看更新代码:

import cv2

img = cv2.imread(<image path>)

dh, dw, _ = img.shape
print(dh,dw)

x,y,w,h = 0.360667, 0.089000, 0.113333, 0.130000

x,y,w,h = int(x*dw), int(y*dh), int(w*dw), int(h*dh)

print(x, y, w, h)

imgCrop = img[y:y+h,x:x+w]


cv2.imshow("Crop Image",imgCrop)

cv2.waitKey(0)

为了更好地理解问题,请查看以下图片:

图像3

img4

图像5

标签: pythonopencvimage-processingcropyolo

解决方案


您需要将这些浮点值转换为整数。您可以通过将它们乘以图像的宽度和高度然后将它们转换为整数来做到这一点。

例子:

x,y,h,w = int(x*img_width), int(y*img_height), int(h*img_higth), int(w*img_width)

然后索引图像:

imgCrop = img[x:x+w, y:y+h]

推荐阅读