pytorch 如何实现HWC转CHW

 更新时间:2021年05月31日 15:01:52   作者:高颜值的杀生丸  
这篇文章主要介绍了pytorch HWC转CHW的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

看代码吧~

import torch
import numpy as np
from torchvision.transforms import ToTensor 
t = torch.tensor(np.arange(24).reshape(2,4,3))
print(t)
 
#HWC 转CHW
print(t.transpose(0,2).transpose(1,2)) 
print(t.permute(2,0,1)) 
print(ToTensor()(t.numpy()))

D:\anaconda\python.exe C:/Users/liuxinyu/Desktop/pytorch_test/day3/hwc转chw.py
tensor([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]],

[[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]]], dtype=torch.int32)
tensor([[[ 0, 3, 6, 9],
[12, 15, 18, 21]],

[[ 1, 4, 7, 10],
[13, 16, 19, 22]],

[[ 2, 5, 8, 11],
[14, 17, 20, 23]]], dtype=torch.int32)
tensor([[[ 0, 3, 6, 9],
[12, 15, 18, 21]],

[[ 1, 4, 7, 10],
[13, 16, 19, 22]],

[[ 2, 5, 8, 11],
[14, 17, 20, 23]]], dtype=torch.int32)
tensor([[[ 0, 3, 6, 9],
[12, 15, 18, 21]],

[[ 1, 4, 7, 10],
[13, 16, 19, 22]],

[[ 2, 5, 8, 11],
[14, 17, 20, 23]]], dtype=torch.int32)

Process finished with exit code 0

补充:opencv python 把图(cv2下)BGR转RGB,且HWC转CHW

如下所示:

img = cv2.imread("001.jpg")
img_ = img[:,:,::-1].transpose((2,0,1))

① 在opencv里,图格式HWC,其余都是CHW,故transpose((2,0,1))

② img[:,:,::-1]对应H、W、C,彩图是3通道,即C是3层。opencv里对应BGR,故通过C通道的 ::-1 就是把BGR转为RGB

注: [::-1] 代表顺序相反操作

③ 若不涉及C通道的BGR转RGB,如Img[:,:,0]代表B通道,也就是蓝色分量图像;Img[:,:,1]代表G通道,也就是绿色分量图像;

Img[:,:,2]代表R通道,也就是红色分量图像。

补充:python opencv 中将图像由BGR转换为CHW用于后期的深度训练

BGR HWC -> CHW 12 -> HCW 01 -> CHW

import cv2 as cv
import  numpy as np
img = cv.imread("lenna.png")
#BGR HWC -> CHW  12 -> HCW 01 -> CHW
transform_img = img.swapaxes(1,2).swapaxes(0,1)
print(img.shape)
print(transform_img.shape)
cv.imshow("image0 ",transform_img[0])
cv.imshow("image1",transform_img[1])
cv.imshow("image2",transform_img[2])
cv.waitKey(0)
cv.destroyAllWindows()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决sublime+python3无法输出中文的问题

    解决sublime+python3无法输出中文的问题

    今天小编就为大家分享一篇解决sublime+python3无法输出中文的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python中的getattribute 、getattr、setattr方法详解

    python中的getattribute 、getattr、setattr方法详解

    这篇文章主要介绍了python中的getattribute 、getattr、setattr方法详解,python类中默认有一些特殊方法,这篇文章记录一下特殊方法的功能及用法,需要的朋友可以参考下
    2023-11-11
  • OpenCV学习方框滤波实现图像处理代码示例

    OpenCV学习方框滤波实现图像处理代码示例

    这篇文章主要为大家介绍了OpenCV学习如何使用方框滤波实现对图像处理代码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • Python yield 关键词,

    Python yield 关键词,

    这篇文章主要介绍了Python yield 关键词,要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。下面文章我们就先从
    迭代器开始展开yield关键词的相关自资料 ,需要的朋友可以参考一下
    2021-12-12
  • 使用Python程序抓取新浪在国内的所有IP的教程

    使用Python程序抓取新浪在国内的所有IP的教程

    这篇文章主要介绍了使用Python程序抓取新浪在国内的所有IP的教程,作为Python网络编程中获取IP的一个小实践,需要的朋友可以参考下
    2015-05-05
  • 使用jupyter notebook保存python代码为.py格式问题

    使用jupyter notebook保存python代码为.py格式问题

    这篇文章主要介绍了使用jupyter notebook保存python代码为.py格式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 基于Python实现五子棋游戏

    基于Python实现五子棋游戏

    这篇文章主要为大家详细介绍了基于Python实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • python语法学习之super(),继承与派生

    python语法学习之super(),继承与派生

    这篇文章主要介绍了python语法学习之super(),继承与派生,继承是一种创建新类的方式,具体的super()派生的相关详细内容需要的小伙伴可以参考下面文章内容
    2022-05-05
  • Python实现网络端口转发和重定向的方法

    Python实现网络端口转发和重定向的方法

    这篇文章主要介绍了Python实现网络端口转发和重定向的方法,结合实例形式分析了Python基于threading和socket模块实现端口转发与重定向的具体操作技巧,需要的朋友可以参考下
    2016-09-09
  • python读取xml文件方法解析

    python读取xml文件方法解析

    这篇文章主要介绍了python读取xml文件方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论