pytorch中tensor与numpy、cv2、pillow转换
时间: 2023-12-22 16:06:14 浏览: 101
可以使用以下代码将 PyTorch 中的 Tensor 转换为 NumPy 数组:
```
import numpy as np
import torch
tensor = torch.randn((3, 4)) # 创建一个大小为 3x4 的张量
numpy_array = tensor.numpy() # 将张量转换为 NumPy 数组
```
要将 NumPy 数组转换为 PyTorch 中的 Tensor,可以使用以下代码:
```
import numpy as np
import torch
numpy_array = np.random.rand(3, 4) # 创建一个大小为 3x4 的 NumPy 数组
tensor = torch.from_numpy(numpy_array) # 将 NumPy 数组转换为张量
```
要将 PyTorch 中的 Tensor 转换为 OpenCV 中的图像,可以使用以下代码:
```
import cv2
import torch
tensor = torch.randn((3, 256, 256)) # 创建一个大小为 3x256x256 的张量
image = tensor.permute(1, 2, 0).numpy() # 将张量转换为 NumPy 数组,并将通道顺序从 CxHxW 转换为 HxWxC
cv2.imshow("Image", image) # 显示图像
cv2.waitKey() # 等待关闭窗口
```
要将 OpenCV 中的图像转换为 PyTorch 中的 Tensor,可以使用以下代码:
```
import cv2
import torch
image = cv2.imread("image.png") # 读取图像文件
tensor = torch.from_numpy(image.transpose((2, 0, 1))) # 将图像转换为张量,并将通道顺序从 HxWxC 转换为 CxHxW
```
要将 PyTorch 中的 Tensor 转换为 Pillow 中的图像,可以使用以下代码:
```
from PIL import Image
import torch
tensor = torch.randn((3, 256, 256)) # 创建一个大小为 3x256x256 的张量
image = tensor.permute(1, 2, 0).numpy() # 将张量转换为 NumPy 数组,并将通道顺序从 CxHxW 转换为 HxWxC
pil_image = Image.fromarray((image * 255).astype('uint8')) # 将 NumPy 数组转换为 PIL 图像
pil_image.show() # 显示图像
```
要将 Pillow 中的图像转换为 PyTorch 中的 Tensor,可以使用以下代码:
```
from PIL import Image
import numpy as np
import torch
pil_image = Image.open("image.png") # 打开图像文件
numpy_array = np.array(pil_image) / 255.0 # 将 PIL 图像转换为 NumPy 数组,并将像素值转换为 0 到 1 之间的浮点数
tensor = torch.from_numpy(numpy_array.transpose((2, 0, 1))) # 将 NumPy 数组转换为张量,并将通道顺序从 HxWxC 转换为 CxHxW
```
阅读全文