pytorch图像读取(cv2&PIL,numpy&tensor相关小知识)

torch.tensor与numpy array转换相关问题

  1. CV2.imread(file)返回的是numpy array,且形状为[h,w,c],若要被pytorch搭建的网络处理,需先转为tensor,并且要x.permute(2,0,1)转换为[c,h,w]结构。
  2. numpy的device只能是cpu,而tensor则cpu,gpu均可,若tensor转numpy还要注意将tensor先转到cpu。
  3. numpy转tensor: torch.from_numpy()
    tensor转numpy: tensor.numpy()。
  4. require-grade的tensor无法直接转numpy数组,要先detach,即teansor.detach().numpy。

cv2/Dataloader/PIL返回图像对比

  1. 使用PIL得到的图片尺寸是[h,w,c],通道为RGB,取值范围0-255。

  2. 使用DataLoader得到的图像尺寸是[N,C, h, w],通道为RGB,适用于pytorch卷积的尺寸,取值范围0-1。tensor类型。

  3. 使用cv2得到的图像尺寸是[h, w, c],通道为BGR,取值范围0-255。numpy数组。

因此,若来源不同的图像要混合处理,一定注意转换数据类型,以及是否需255归一化或反归一化,尤其cv2最特别,其通道为BGR,若转为其他类型还要转为RGB。转换方法:

sample = cv2.cvtColor(sample, cv2.COLOR_BGR2RGB)

cv2图像读取mode参数

cv2.imread(path, mode)
mode:
cv2.IMREAD_COLOR:默认,读入忽略alpha通道的彩色图片,可用1实参替代
cv2.IMREAD_GRAYSCALE:读入灰度图像,0实参
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道,-1实参

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值