PIL、cv2、numpy,和pytorch(torch)之间的转换

一、单通道图片(灰度图)的读取和转换

1、OpenCV读取(BGR):

因为大多数显示或处理图像的函数都期望图像是BGR格式(即Blue-Green-Red),而不是灰度格式。

在OpenCV imread函数图片读取出来默认为3通道,当你读取单通道(灰度图)图像时,通道数会自动扩展为三通道。Opecv会将单通道的图复制3次转化为三通道, 因此三个通道的颜色值是相同的。

如果你不想让OpenCV这样做,即想要保持读取的图像为单通道,可以使用以下方法:cv2.IMREAD_UNCHANGED标志。保持图像的原通道数不变。如果图像本来是单通道的,那么读取后它仍然是单通道的。如果图像本来有多个通道,那读取后会是多通道。

cv2.IMREAD_GRAYSCALE 标志。指定读取单通道图像(灰度图),最后的结果是单通道

python 复制代码
import cv2
 
# 读取图像,保持原通道数
image = cv2.imread('image.jpg', cv2.IMREAD_UNCHANGED)

# 读取单通道图像(灰度图)
img_gray = cv2.imread('img.png', cv2.IMREAD_GRAYSCALE)

# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()


# 单通道(灰度图)转换到RGB
img_rgb = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2RGB)

# opencv 默认读取的是 BGR 三通道, 从BGR转换为RGB
image_bgr = cv2.imread('image.jpg')
img_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)


# 图片保存
output_file = 'imageRGB.png'
cv2.imwrite(output_file, img_rgb)

2、PIL 读取(RGB):

默认模式下PIL会自动检测图像模式,如果是灰度图则为'L'模式,灰度图读出的结果就是单通道

python 复制代码
from PIL import Image
 
# 打开图像(默认模式下PIL会自动检测图像模式,如果是灰度图则为'L'模式)
img_gray = Image.open('your_image.png')


# 转换为RGB图像
# 注意:对于灰度图,直接使用.convert()转为"RGB"模式并不会增加色彩信息,每个像素的R=G=B=灰度值
img_rgb = img_gray.convert('RGB')
 
# 显示图像
img_rgb.show(title='Converted to RGB')
 
# 保存转换后的图像
output_file = 'converted_image.png'
img_rgb.save(output_file)
相关推荐
GIS数据转换器2 分钟前
城市生命线安全保障:技术应用与策略创新
大数据·人工智能·安全·3d·智慧城市
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之65 详细设计 之6 变形机器人及伺服跟随
人工智能
井底哇哇7 小时前
ChatGPT是强人工智能吗?
人工智能·chatgpt
Coovally AI模型快速验证7 小时前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩8 小时前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控8 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
一水鉴天8 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
倔强的石头1069 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
佛州小李哥9 小时前
Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
说私域10 小时前
社群裂变+2+1链动新纪元:S2B2C小程序如何重塑企业客户管理版图?
大数据·人工智能·小程序·开源