【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学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
328 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
2月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
49 4
|
2月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
3月前
|
计算机视觉 C++
基于VS2019和Opencv4,对hsv颜色空间的图像分割原理以及实现
这篇文章介绍了基于HSV颜色空间的图像分割原理,包括HSV模型的基本概念和如何在OpenCV中通过设置HSV的色彩范围来实现图像中特定颜色的物体分割,并通过示例代码展示了在静态图像和视频流中进行颜色分割的方法。
基于VS2019和Opencv4,对hsv颜色空间的图像分割原理以及实现
WK
|
3月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
108 1
|
3月前
|
TensorFlow 算法框架/工具 Python
【Tensorflow 2】解决'Tensor' object has no attribute 'numpy'
解决'Tensor' object has no attribute 'numpy'
61 3
|
4月前
|
存储 C语言 Python
NumPy 教程 之 NumPy 数据类型 10
NumPy的`dtype`对象详细描述数组数据,包括类型(如整数、浮点、对象)、大小、字节顺序和结构化字段信息。构造`dtype`时可指定对齐和是否复制。例如,定义一个结构化类型`student`含字符串`name`、整数`age`和浮点数`marks`,然后创建一个数组应用该类型,输出显示结构化数据内容。
42 5
|
4月前
|
存储 C语言 Python
NumPy 教程 之 NumPy 数据类型 11
NumPy的`dtype`对象详细描述数组数据的类型、大小、字节顺序及结构。它支持布尔、整数、浮点、复数、时间和日期类型等,与C语言类型相似。通过`numpy.dtype`构造,可指定对齐和复制。每个类型有唯一字符标识,如'b'代表布尔,'i'代表有符号整数,'f'代表浮点数,'c'代表复数,'S'和'U'表示字符串,'V'表示原始数据。字节顺序用'<'或'>'标记。
27 2
|
4月前
|
存储 C语言 Python
NumPy 教程 之 NumPy 数据类型 6
NumPy的`dtype`对象详细描述数组数据,包括类型(如整数、浮点数)、大小、字节顺序和结构化类型字段。构造`dtype`使用`numpy.dtype()`,参数可指定数据类型、对齐和复制选项。实例展示了创建结构化类型`dt`,含一个`int8`类型的'age'字段,输出为`[('age', 'i1')]`。
24 1