Python 三维数组升为四维数组

本文介绍了在使用Pytorch进行深度学习时,如何处理opencv读取的灰度图数据。由于opencv读取的灰度图数据缺少通道维度,不满足Pytorch的输入格式要求,通过在numpy操作中添加维度来解决此问题。具体方法是在灰度图数据末尾使用np.newaxis添加维度,避免了reshape可能导致的图像失真。代码示例展示了这一处理过程,最终将数据保存为适合Pytorch的格式。
摘要由CSDN通过智能技术生成

在尝试用深度学习做项目时,发现对于Pytorch框架下的cnn网络,灰度图的输入格式应该为(n,ch,h,w)。n为图片数量,ch为通道数,h,w为图片长宽像素。
然而实际在opencv处理的通道数为1灰度图时,其给出的图片大小为(h,w)其直接忽视了通道数,这样数据集的格式为(n,h,w)。不满足Pytorch输入要求。
而如果采用np.reshape(1,h,w)改变格式,当图片用reshape(h,w)复原为(h,w)时可能会失真。因此可以采用np.newaxis加一个维度。
以下为代码

for j in range(len(train_name5)):
    image_data = [] #空的list
    image_label = []
    for i in range(len(level)):
        read_path=path+level[i]+"/"+train_name5[j]
        pic=cv.imread(read_path)
        gray=cv.cvtColor(pic,cv.COLOR_BGR2GRAY)
        gray=cv.resize(gray,(150,150))#改变图片大小
        cv.imshow("aa",gray)
        #gray=gray.reshape(1,150,150)
        image_label_data=i #标签
        gray = gray.astype(float)
        image_data.append(gray[np.newaxis,:])#增加1dim
        image_label.append(image_label_data)
    image_label = np.array(image_label)
    image_label = image_label.astype(int)
    #print(image_data.shape)
    np.save("Image_data5.npy", image_data)
    np.save("label_data5.npy", image_label)
i=np.load("Image_data5.npy")
print(i.shape)

#输出结果
(5, 1, 150, 150)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值