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()

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

(0)

相关推荐

  • Python+OpenCV图像处理—— 色彩空间转换

    一.色彩空间的转换 代码如下: #色彩空间转换 import cv2 as cv def color_space_demo(img): gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) #RGB转换为GRAY 这里的GRAY是单通道的 cv.imshow("gray", gray) hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV) #RGB转换为HSV cv.imshow("hsv", hsv) y

  • opencv-python的RGB与BGR互转方式

    一.格式转换 opencv读取图片的默认像素排列是BGR,需要转换.PIL库是RGB格式. caffe底层的图像处理是基于opencv,其使用的颜色通道顺序与也是BGR(Blue-Green-Red),而日常图片存储时颜色通道顺序是RGB. 在Python中,将RGB顺序的图像转成BGR顺序,需要调整channel dimension的各颜色通道顺序. 方法1: img = cv2.imread("001.jpg") img_ = img[:,:,::-1].transpose((2,

  • 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图像,通道是hc

  • 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:\anacond

  • Pytorch 图像变换函数集合小结

    一.必要的 python 模块 PyTorch 的 Vision 模块提供了图像变换的很多函数. torchvision/transforms/functional.py from __future__ import division import torch import sys import math from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION try: import accimage except Import

  • Pytorch如何把Tensor转化成图像可视化

    目录 Pytorch把Tensor转化成图像可视化 pytorch标准化的Tensor转图像问题 总结 Pytorch把Tensor转化成图像可视化 在调试程序的时候经常想把tensor可视化成来看看,可以这样操作: from torchvision import transforms unloader = transforms.ToPILImage() image = original_tensor.cpu().clone()  # clone the tensor image = image

  • python实现求纯色彩图像的边框

    本文实例为大家分享了python实现求纯色彩图像的边框,供大家参考,具体内容如下 先上效果图,这里显示有点色差, 实际数值是纯色的, 而不是混色的. 放大局部细节看是这样的 原图是下面这样的 这个算法最大的特点是保留原始像素的数值, 而不是把边框统一变成白色. 实现的算法也超级简单. 就是有点慢. 考虑到我这个应用场景对性能要求不高, 比人快就行. 人工是它的几百倍. 所以也就无所谓啦. 测试结果一张1080*1920的图用时3秒, 如果换成c语言估计0.5秒左右. 算法原理, 每次4个田子形像

  • Python利用DNN实现宝石识别

    目录 任务描述 深度神经网络(DNN) 数据集介绍 1.数据准备 2.定义模型 3.训练模型 4.模型评估 5.模型预测 任务描述 本次实践是一个多分类任务,需要将照片中的宝石分别进行识别,完成宝石的识别 实践平台:百度AI实训平台-AI Studio.PaddlePaddle1.8.0 动态图 深度神经网络(DNN) 深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础,其结构为input.hidden(可有多层).output,每层均为全连接. 数据集介绍 数

  • 如何将Yolov5的detect.py修改为可以直接调用的函数详解

    前几天学习了Yolov5,当我想实际将Yolov5实际运用的时候却不知道怎么办了 然后我决定对Yolov5的detect.py修改为可以直接调用的函数 因为我只需要识别图片,所以我将detect.py修改为只要传入一张图片他就可以返回坐标 ps:我这里用的是Yolov5(6.0版本) # Copyright (c) 2022 guluC #导入需要的库 import os import sys from pathlib import Path import numpy as np import

  • pytorch 把图片数据转化成tensor的操作

    摘要: 在图像识别当中,一般步骤是先读取图片,然后把图片数据转化成tensor格式,再输送到网络中去.本文将介绍如何把图片转换成tensor. 一.数据转换 把图片转成成torch的tensor数据,一般采用函数:torchvision.transforms.通过一个例子说明,先用opencv读取一张图片,然后在转换:注意一点是:opencv储存图片的格式和torch的储存方式不一样,opencv储存图片格式是(H,W,C),而torch储存的格式是(C,H,W). import torchvi

  • Pytorch中TensorBoard及torchsummary的使用详解

    1.TensorBoard神经网络可视化工具 TensorBoard是一个强大的可视化工具,在pytorch中有两种调用方法: 1.from tensorboardX import SummaryWriter 这种方法是在官方还不支持tensorboard时网上有大神写的 2.from torch.utils.tensorboard import SummaryWriter 这种方法是后来更新官方加入的 1.1 调用方法 1.1.1 创建接口SummaryWriter 功能:创建接口 调用方法:

  • Pytorch用Tensorboard来观察数据

    目录 1.Tensorboard 1.使用add_scalar()输入代码 2.使用add_image()输入代码 上一章讲数据的处理,这一章讲数据处理之后呈现的结果,即你有可能看到Loss的走向等,这样方便我们调试代码. 1.Tensorboard 有两个常用的方法: 一个是add_scalar()显:示曲线 一个是add_image()显示图像 首先安装Tensorboard 在你的编译环境(conda activate XXX)中输入命令 pip install tensorboard 1

随机推荐