相关疑难解决方法(0)

如何将 Yolo 格式的边界框坐标转换为 OpenCV 格式

我有Yolo保存在.txt文件中的对象的格式边界框注释。现在我想加载这些坐标并使用 将其绘制在图像上OpenCV,但我不知道如何将这些浮点值转换为OpenCV格式坐标值

我尝试了这篇文章,但没有帮助,下面是我正在尝试做的示例示例

代码和输出

import matplotlib.pyplot as plt
import cv2

img = cv2.imread(<image_path>)
dh, dw, _ = img.shape
        
fl = open(<label_path>, 'r')
data = fl.readlines()
fl.close()
        
for dt in data:
            
    _, x, y, w, h = dt.split(' ')
            
    nx = int(float(x)*dw)
    ny = int(float(y)*dh)
    nw = int(float(w)*dw)
    nh = int(float(h)*dh)
            
    cv2.rectangle(img, (nx,ny), (nx+nw,ny+nh), (0,0,255), 1)
            
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

实际注释和图像

0 0.286972 0.647157 0.404930 0.371237 
0 0.681338 0.366221 0.454225 0.418060
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python opencv yolo

6
推荐指数
2
解决办法
6221
查看次数

如何将形式 [xmin ymin xmax ymax] 转换为图像中标准化的 [xy 宽度高度]?

我正在使用 Microsoft 的CustomVision.ai构建自定义视觉应用程序。

我正在使用本教程

在对象检测项目中标记图像时,需要使用标准化坐标指定每个标记对象的区域。

我有一个 XML 文件,其中包含有关图像的注释,例如名为sample_1.jpg

<annotation>
        <filename>sample_1.jpg</filename>
    <size>
        <width>410</width>
        <height>400</height>
        <depth>3</depth>
    </size>
    <object>
        <bndbox>
            <xmin>159</xmin>
            <ymin>15</ymin>
            <xmax>396</xmax>
            <ymax>302</ymax>
        </bndbox>
    </object>
</annotation>
Run Code Online (Sandbox Code Playgroud)

我必须根据提供的教程将边界框坐标从 xmin,xmax,ymin,ymax 转换为标准化的 x,y,w,h 坐标。

谁能给我一个转换函数?

python object-detection microsoft-custom-vision

2
推荐指数
2
解决办法
4452
查看次数

YOLOv4注释将维度保存在[0,1]浮点区间中

这是来自图像的注释文件:

0 0.6142131979695431 0.336 0.467005076142132 0.392
Run Code Online (Sandbox Code Playgroud)

第一个0是类标签。0.61421319796954310.336是边界框的 x 和 y 坐标。0.4670050761421320.392是边界框的宽度和高度。但是,我不明白的是为什么 x、y、宽度和高度都在 [0,1] 浮点区间内。有人告诉我这是一个百分比,但是相对于什么的百分比呢?

例如,我正在编写构建合成数据集的软件。这是我制作的一张训练图像。它在我想要检测的对象周围有边界框。

在此输入图像描述

边框完美地包裹了 Wizards 和 Ubuntu 徽标。那么,我该如何像上面的格式一样注释它们呢?

python object-detection computer-vision deep-learning yolo

2
推荐指数
1
解决办法
4991
查看次数