首页 > 解决方案 > 图像处理 - 如何将图像列表及其标签存储在单热编码的 ndarray 中?

问题描述

我有一个包含 1976 年训练图像的文件夹。每个图像都有一个形状 (118,128,1)(灰度图像)。我创建了一个包含所有图像的数组,如下所示:

import glob
import scipy
import cv2

images = [cv2.imread(path, 0) for path in glob.glob('rootDir/train/*.png')]
images = np.asarray(images)

产生:

images 
out[0]  array([[[ 38,  47,  51, ...,  53,  53,  46],
            [ 48,  49,  50, ...,  53,  50,  51],
            [ 48,  51,  53, ...,  54,  50,  51],
            ...,
            [ 59,  61,  57, ..., 194, 195, 200],
            [ 76,  71,  65, ..., 212, 212, 199],
            [ 81,  80,  77, ..., 179, 184, 197]],
            ....

images.shape
out[1]: (1976, 128, 118)

现在问题是,我将图像的标签存储在 csv 文件中,格式如下:

id,appliance
1000,8
1001,1
1002,8
1003,1
1004,6
1005,1
1006,1
1007,2
1008
1009,5
1010
1011,3
1012,2
....

id 与每个图像的文件名匹配,“设备”列包含分配给每个图像以进行训练的标签值。

为了使用 CNTK 将此数据提供给 CNN 模型,我需要将图像数据转换为具有图像特征及其标签的 one-hot 编码数组。我想要的预期输出是这样的:

|labels 0 0 0 1 0 0 0 0 0 0 |features 0 0 0 0 ... 
                                              (15104 integers each representing a pixel)

我完全迷失了,感谢任何帮助。

针对 DAN-MASEK 的评论进行编辑:

嗨,丹,这是错误的屏幕截图:

截屏

正如我之前所说,我像这样设置变量 ID_APP_MAP_FILENAME = 'train_labels.csv'。如果您需要任何进一步的信息,请告诉我。谢谢

标签: pythonnumpyopencvimage-processingmultidimensional-array

解决方案


推荐阅读