使用pytorch实现HWC转CHW分析

news/2024/10/2 22:18:42

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

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

参考文献链接

Opencv读取图片HWC转CHW

在读取图片时,一般可采取PIL或cv2实现,但是二者读取得到的数据格式有些不同。

对于给定的RGB图片,当使用PIL加载图片时,可将其直接转换为[C,H,W]的tensor,并且此时格式为RGB。

img = torch.ByteTensor(torch.ByteStorage.from_buffer(img.tobytes()))

当采用cv2读取图片时,不同之处有两点:

读取的维度为[H,W,C];

颜色通道为BGR,而不是RGB。

因此,在PIL和CV2读取图片间进行转换时,需要同时注意维度和RGB通道。

具体地,将HxWxC转换为CxHxW:

通过transpose()实现,分别img.transpose(0,1)和img.transpose(0,2)即可;

也可直接使用permute(),即img.permute(2,0,1)

此外,若设计BGR转RGB,则首先需要对通道进行逆序,通过下面命令实现。

img = img[::-1,:,:]

 

 

 

参考文献链接                    

http://www.zzvips.com/article/205586.html

https://blog.csdn.net/u010970956/article/details/104338072

https://blog.csdn.net/qq_32925101/article/details/125173277

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

双拼学习 - 小鹤双拼

双拼很有意思,很好玩的!1 小鹤双拼 小鹤双拼官方网站 学会了就再也回不去了,大家也学会使用双拼吧!From: @韦易笑 原理就是第一个字母输入声母(红色字体),第二个字母输入韵母(蓝色字体),所有汉字都是两次击键,外加几条纯韵母规则(或者叫零声母,比如啊字),对于声…

Web服务器编程

浏览器与web服务器的通信流程Web编程 Web编程.c 服务器应答格式: 服务器接收到浏览器的数据之后,需要判断GET/后面跟的网页是否存在,如果存在则请求成功,发送指定的指令,并发送文件内容给浏览器,如果不存在,则发送请求失败的指令请求成功: "HTTP/1.1 200 OK\r\n &…

MongoDB文档存储

非关系型数据库存储NoSQL,全称 Not Only SQL,意为不仅仅是 SQL,泛指非关系型数据库。NoSQL 是基于键值对的,而且不需要经过 SQL 层的解析,数据之间没有耦合性,性能非常高。 非关系型数据库又可细分如下。键值存储数据库:代表有 Redis、Voldemort 和 Oracle BDB 等。 列存…

SSH Samba

1. SSH的安装与配置 Secure Shell (SSH) 是一种网络协议,允许用户通过加密的通道安全地访问另一台计算机。SSH广泛用于远程登录系统、管理服务器和进行安全数据传输。在Ubuntu这样的Linux发行版中,安装和配置SSH服务是一项常见且相对简单的任务。以下是在Ubuntu系统上安装和配…

nmap官方文档

名称 nmap — 网络探测工具和安全/端口扫描器 理论 渗透测试流程以及每个阶段需要做的事情 与客户确认测试范围——获得授权书——信息收集——漏洞挖掘——漏洞利用——后渗透——痕迹清除——生成渗透测试报告 项目启动:事先与客户沟通,测试事项、获得授权、保密协议测试对…

使用cJSON库对JSON格式进行解析

JSON format基本概念 JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言 它易于阅读和编写,并且易于机械解析和生成,常在Web开发中用于数据的格式和传输数据格式 对象 JSON 由两种数据结构组成…

【攻防演练】-- 蓝队复盘

攻防演练前期演练的意义:卡巴斯基实验室和B2B International调查报告曾指出,“IT安全中的人为因素:员工如何让企业更容易遭受攻击”,全球有40%的企业存在员工隐藏IT安全事故的情况。每年,有46%的IT安全事故是由企业员工造成的。 SolarWinds发布的网络安全调查报告显示,相比…

一些做过的生物遗传题

菜鸡 luyiming 也想变强的说。2020-山东 T23备注:第一部分题目讲的条件翻译过来就是 tsts 基因型是雌株,Ts_是雌雄同株。 (3) 第二问我自己的思考方法:注意到比例为两个 3:1,所以 Ts, ts 的分离是没啥问题的,不动。注意到我删掉雌雄其中之一的 A_ 配子,就变成了 [AT, At,…