【发布时间】:2020-07-20 05:43:21
【问题描述】:
我有一组图像及其对应的 YOLO 坐标。现在我想将这些 YOLO 坐标表示的对象提取到单独的图像中。
但这些坐标是浮点数,因此无法使用拼接。
这是一张图片Sample Image,对应的YOLO坐标是
labels = [0.536328, 0.5, 0.349219, 0.611111]
我读我的图片如下:
image = cv2.imread('frame0.jpg')
然后我想使用类似image[y:y+h,x:x+w] 的东西,就像我在类似问题中看到的那样。但是变量是浮动的,所以我尝试使用图像1280 x 720 的尺寸将它们转换为整数,如下所示:
object = [int(label[0]*720), int(label[1]*720), int(label[2]*1280), int(label[3]*1280)]
x,y,w,h = object
但它没有正确获取图像的一部分,正如您在此处看到的 extractedImage
这是我的训练数据集的一部分,所以我之前使用一些工具裁剪了这些部分,所以我的标签不会有任何错误。此外,所有图像都以这种方式错误裁剪,我已经显示了其中 1 个图像的输出。
提前非常感谢。任何建议都会非常有帮助!
【问题讨论】:
-
可能很愚蠢的建议 - 您是否尝试过反转尺寸?如,而不是
[y:y+h, x:x+w],尝试[y:y+w, x:x+h]? -
是的,也尝试过。没有正确裁剪图像!
-
你可以在你的“对象”行中使用 x,y,w,h 吗?我认为您根据 x,y,w,h = 标签行混合了错误的值
-
我实际上确实将
object值分配给了x,y,w,h。我已经更新了我的问题。 -
label中的值代表 xmin,ymin,xmax,ymax?
标签: python image opencv machine-learning image-processing