Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式

 更新时间:2020年06月02日 10:33:10   作者:xiaoxifei  
这篇文章主要介绍了Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

传统使用opencv自带的swapaxes进行转换,然后使用pytorch的from_numpy转为tensor

例如:

img = img.swapaxes(1,2).swapaxes(0,1)

但是有一个常用的图像增广模块albumentations模块中的img_to_tensor进行直接转换

注意:我这里使用unsqueeze是为了验证模型的输出,如果使用pytorch的dataset则不需要使用这个操作

补充知识:pytorch只用中要注意通道问题

cv读进来的是BGR图像,通道是hcw,在torch中使用要注意维度转换

def __getitem__(self, idx):
    '''Load image.
    Args:
     idx: (int) image index.
    img_org = Image.open(self.root_src + 'reference_cutBlock' + fname_org)
    Returns:
     img: (tensor) image tensor.
     loc_targets: (tensor) location targets.
     cls_targets: (tensor) class label targets.
    '''
    # Load image
    fname_org = self.fnames[idx]
    img_org = cv2.imread(self.root_src + 'dn_dataset/' + fname_org)
    # img_org = np.asarray(img_org)
 
    coin = np.random.randint(0, 50)
    img_dis = skimage.util.random_noise(img_org, mode='gaussian', seed=None,
                      var=(coin / 255.0) ** 2) # add gaussian noise
 
    # img_dis = img_dis[:, :, (2, 1, 0)] # bgr012 to rgb210
    img_dis = img_dis.transpose([2, 0, 1]) # hwc to chw
    img_dis = img_dis[(2, 1, 0), :, :] # bgr012 to rgb210
 
    img_org = img_org[:, :, (2, 1, 0)]/255.0 # bgr012 to rgb210
    img_org = img_org.transpose([2, 0, 1]) # hwc to chw
 
    img_dis = torch.from_numpy(img_dis).float()
    img_org = torch.from_numpy(img_org).float()
    # fname_org_dis = self.fnames_dis[idx]
    # img_dis = Image.open(self.root_src + 'distorted_train_block/' + fname_org_dis)
 
    # if img_org.mode != 'RGB':
    #   img_org = img_org.convert('RGB')
    #
    # if img_dis.mode != 'RGB':
    #   img_dis = img_dis.convert('RGB')
    # img_org = self.transform(img_org)
    # img_dis = self.transform(img_dis)
 
    return img_dis, img_org

transforms.ToTensor() 有两层含义,一个是转化成Tensor,另一个是进行归一化,此段代码,没有采用此语句,而是分两步完成,因为img_dis,已经实现归一化。

以上这篇Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python .format()函数使用方法详解

    Python .format()函数使用方法详解

    python中format函数用于字符串的格式化,接下来通过本文给大家介绍python中format()函数的简单使用教程,一起看看吧
    2021-10-10
  • Pytorch中Softmax和LogSoftmax的使用详解

    Pytorch中Softmax和LogSoftmax的使用详解

    这篇文章主要介绍了Pytorch中Softmax和LogSoftmax的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 如何实现一个python函数装饰器(Decorator)

    如何实现一个python函数装饰器(Decorator)

    这篇文章主要介绍了如何实现一个python函数装饰器(Decorator),帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-10-10
  • 详解Python中openpyxl模块基本用法

    详解Python中openpyxl模块基本用法

    这篇文章主要介绍了Python中openpyxl模块基本用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python持续监听文件变化代码实例

    Python持续监听文件变化代码实例

    这篇文章主要介绍了Python持续监听文件变化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Python装饰器的练习题

    Python装饰器的练习题

    这篇文章主要给大家分享的是 Python装饰器的练习题,习题不多,就三个基础练习题,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • Python和perl实现批量对目录下电子书文件重命名的代码分享

    Python和perl实现批量对目录下电子书文件重命名的代码分享

    这篇文章主要介绍了Python和perl实现批量对目录下电子书文件重命名的代码分享,本文同时给出了Python和perl两种语言的实现代码,需要的朋友可以参考下
    2014-11-11
  • Python常用模块用法分析

    Python常用模块用法分析

    这篇文章主要介绍了Python常用模块用法分析,主要包括内置函数、文件操作、正则匹配等等,需要的朋友可以参考下
    2014-09-09
  • python实现word/excel/ppt批量转pdf的示例代码

    python实现word/excel/ppt批量转pdf的示例代码

    这篇文章主要为大家详细介绍了如何利用python实现word、excel、ppt批量转pdf文件,文中的示例代码讲解详细,有需要的小伙伴可以参考下
    2023-09-09
  • Python turtle画图库&&画姓名实例

    Python turtle画图库&&画姓名实例

    今天小编就为大家分享一篇Python turtle画图库&&画姓名实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01

最新评论