CIFAR-10解析时的np.transpose(img_a,(1,2,0))

  • 在解析CIFAR-10数据集时,由于数据集存放格式如下:
    在这里插入图片描述
    即数据集中的数据存放时,是把每个32323的图像拉为了一维数组,共3072个数据。前1024个位每个点的R,后面依次为1024个点的G,1024个点的B。
  • 因此,我们在解析时,有以下命令:
mydict = unpickle(file_i)
    print(mydict[b'data'][0])
    img_a = mydict[b'data'][0].reshape(3,32,32) / 255   # CIFAR10数据集在将32*32*3图像拉伸为一维数组时,
    # 依次存放1024个R,1024个G,1014个B数据,将其reshape为(3,32,32),则一共有3层,第一层全是R,第二层全是G,第三层全是B
    img_a = np.transpose(img_a,(1,2,0)) # 翻转数据,将三层的RGB作为图像的深度
    print(img_a)
    cv2.imshow("wcc",img_a)
    userkey = cv2.waitKey()

  • 其中reshape(3,32,32),得到的是高为3、长为32、宽为32的矩阵,第1层有1024个数据,全为R通道数据。第2层为G,第3层为B。
    在执行transpose(img_a,(1,2,0))时,其过程理解如下:
    以下图为例:
    在这里插入图片描述
    红圈1中矩阵为原始矩阵,为方便理解,将(3,32,32)矩阵简化为(3,2,2)矩阵,共3层2行2列,其中第一层为[0 1] [2 3],[0 1]是一层第一行,[2 3]是第一层第二行,每行中有2列。因此,每个点的RGB数据应该是:[0,4,8],[1,5,9],[2,6,10],[3,7,11]
    根据CIFAR-10数据集制作说明,可知第一层的数据全是R,我们在给矩阵进行转置(1,2,0)后,上述结果变为了(2,2,3),共2行2列3层,以行列来看,每个点包含三层数据,分别是从原本的数据中的每一层取了一个,刚好组成RGB,符合图像数据格式,因此可以直接用imshow显示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天城寺电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值