【opencv】图像数据类型由numpy转为tensor后颜色改变

简介: 【opencv】图像数据类型由numpy转为tensor后颜色改变
+关注继续查看

一、问题

使用如下方法将图像数据类型由numpy转为tensor

# 读取图像
img = cv.imread('../imgs/person_fiona.jpg', 1)  # read an image
# 图像数据类型转换
transform1 = transforms.Compose([
        transforms.ToTensor(),
])
img = transform1(img)
# 更换数据维度顺序以便于plt显示图像
img = img.permute(1, 2, 0) 
plt.imshow(img)
plt.show()

效果如下
image.png

二、解决

opencv读取图片的颜色通道顺序为BGR,因此直接转换会导致图片颜色变化,需要将通道顺序改为RGB,在这里使用lambda函数(仅添加了第七行)

# 读取图像
img = cv.imread('../imgs/person_fiona.jpg', 1)  # read an image
# 图像数据类型转换
transform1 = transforms.Compose([
    transforms.ToTensor(),
    # opencv读取图片的颜色通道顺序为BGR,因此直接转换会导致图片颜色变化,这里将通道顺序改为RGB
    transforms.Lambda(lambda x: x[torch.LongTensor([2, 1, 0])])
])
img = transform1(img)
# 更换数据维度顺序以便于plt显示图像
img = img.permute(1, 2, 0) 
plt.imshow(img)
plt.show()

效果如下
image.png

目录
相关文章
|
1月前
|
计算机视觉
opencv 之 颜色通道提取
opencv 之 颜色通道提取
|
2月前
|
存储 计算机视觉 C++
【OpenCV • c++】颜色数据结构与颜色空间转换
【OpenCV • c++】颜色数据结构与颜色空间转换
63 0
|
5月前
|
Python
CV5 numpy入门及图像的基本操作
复制法,即复制最边缘的像素。
30 0
|
8月前
|
机器学习/深度学习 计算机视觉 Python
基于Numpy数组的图像分割 基于PIL对图像进行拼接
基于Numpy数组的图像分割 基于PIL对图像进行拼接
131 0
基于Numpy数组的图像分割 基于PIL对图像进行拼接
|
8月前
|
TensorFlow 算法框架/工具 Python
TensorFlow将Tensor或者numpy数据变成迭代器
TensorFlow将Tensor或者numpy数据变成迭代器
47 0
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Tensor:Pytorch神经网络界的Numpy(二)
Tensor:Pytorch神经网络界的Numpy(二)
114 0
Tensor:Pytorch神经网络界的Numpy(二)
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Tensor:Pytorch神经网络界的Numpy(一)
Tensor:Pytorch神经网络界的Numpy(一)
93 0
Tensor:Pytorch神经网络界的Numpy(一)
|
11月前
|
Python
|
计算机视觉 Python
Numpy 进阶(二) — 对图像进行旋转、水平、垂直镜像操作!
原理讲解 用 Python 对图片做旋转、镜像操作时,小伙伴们可能首先想到的是 PIL 、Opencv 等图像处理程序包,只需要一行代码就可以实现目标转换。 这样做的确能够实预期目标,但图像是怎么实现旋转的,这个过程对我们来说就像一个黑盒子,很陌生,为了了解图像变换机制,这篇文章借助 Numpy 数组来实现图像翻转等操作
Numpy 进阶(二) — 对图像进行旋转、水平、垂直镜像操作!
相关产品
云迁移中心
推荐文章
更多