【发布时间】:2020-02-04 00:02:12
【问题描述】:
我正在将 hand_dataset 注释转换为可以在 YOLOv3 中使用的格式。注释是 .mat 二进制格式,我想在 .csv 中提取、转换和重组。
我试过mat = scipy.io.loadmat(file),但提取数据的格式很奇怪。
mat = scipy.io.loadmat(file)
bboxes = np.transpose(mat['boxes'])
给出输出:
[[array([[(array([[488.42954942, 345.62261032]]), array([[461.57045058, 348.37738968]]), array([[465.57045058, 387.37738968]]), array([[492.42954942, 384.62261032]]))]],
dtype=[('a', 'O'), ('b', 'O'), ('c', 'O'), ('d', 'O')])]
其中 shape 为 (2,1) 和 numpy.array 类型。
我能够提取迭代整个数据集注释的点,如下所示:
points = np.array([point[0] for point in bboxes[0][0][0][0]])
层次结构在哪里:
print(bboxes[0])
print(bboxes[0][0])
print(bboxes[0][0][0])
print(bboxes[0][0][0][0])
print(bboxes[0][0][0][0][0])
print(bboxes[0][0][0][0][0][0][1])
是否有任何“更好”的方法来提取所需的点?
给定打印的输出:
[[(array([[488.42954942, 345.62261032]]), array([[461.57045058, 348.37738968]]), array([[465.57045058, 387.37738968]]), array([[492.42954942, 384.62261032]]))]]
[(array([[488.42954942, 345.62261032]]), array([[461.57045058, 348.37738968]]), array([[465.57045058, 387.37738968]]), array([[492.42954942, 384.62261032]]))]
(array([[488.42954942, 345.62261032]]), array([[461.57045058, 348.37738968]]), array([[465.57045058, 387.37738968]]), array([[492.42954942, 384.62261032]]))
[[488.42954942 345.62261032]]
345.6226103157693
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
有一个
squeeze参数。