OpenCV色彩通道及灰度图片转彩色图片

使用提醒

在使用cv2时,首先一定要注意图片的存储路径千万不能有中文!!!

(涉及的任何路径最好都不要用中文,因为很有可能报错)

图片矩阵各维度大小

# 1. 读取彩色图片和灰度图片
color_image = cv2.imread("./0m1s.jpg", cv2.IMREAD_COLOR)
gray_image = cv2.imread("./0m1s-gray.jpg", cv2.IMREAD_GRAYSCALE)

# 1. 输出图片矩阵各维度大小
print(f'Color Image Shape: {color_image.shape}')
print(f'Gray Image Shape: {gray_image.shape}')

彩色图片矩阵的色彩通道排列顺序

可以简单理解:判断彩色图片矩阵的色彩通道排列顺序的依据就是OpenCV默认的原因,只要用OpenCV读,其顺序就是BGR

OpenCV在读取彩色图像时,默认使用的是BGR(蓝-绿-红)色彩空间顺序来存储像素数据。这是因为OpenCV是建立在许多计算机视觉库的传统之上,这些库通常遵循这种顺序,尤其是与硬件接口时,比如摄像头输出。因此在OpenCV中使用cv2.imread()函数读取图像时,返回的彩色图像矩阵的通道顺序就是BGR。

# OpenCV通常使用BGR顺序,我们可以查看第一个像素来验证
first_pixel = color_image[0, 0]
# 输出BGR值
b, g, r = first_pixel
print(f'First Pixel (B, G, R): ({b}, {g}, {r})')

将灰度图片转为彩色图片

通道拼接方法

通道拼接方法通常用于图像处理中,将多个通道(如RGB的三个通道)的图像数据合并成一个图像。如果这三个通道的图像数据是真实地从R、G、B三个基色分量捕获的,并且没有后续的色彩转换或修改,那么这种通道拼接方法形成的图像就是真实彩色图像。
然而,如果通道拼接方法用于合并的是非RGB通道的图像数据,或者RGB通道的图像数据经过了色彩空间转换(如从HSV或YUV转换到RGB),那么形成的图像可能就不包含真正的彩色信息,而是经过处理或转换后的颜色。

伪彩色方法

伪彩色图像是指通过某种算法或映射将灰度图像或其他非彩色图像转换为彩色图像的技术。在伪彩色方法中,图像的每个像素的颜色不是由每个基色分量的数值直接决定,而是基于某种映射或查找表来确定的。
因此,伪彩色方法形成的图像并没有真正的彩色信息,它们所呈现的颜色是通过算法或映射生成的,而不是图像本身所包含的。

当通道拼接方法用于合并真实的R、G、B基色分量的图像数据时,形成的图像是真实彩色图像。
当通道拼接方法用于合并非RGB通道的图像数据或经过色彩空间转换的RGB数据时,形成的图像可能不包含真正的彩色信息。
伪彩色方法形成的图像没有真正的彩色信息,它们所呈现的颜色是通过算法或映射生成的。

真实彩色图像

  • 真实彩色图像(True Color Image)是由红、绿、蓝(RGB)三个颜色通道的原始数据合成的,每个像素的色彩由这三个通道的强度值决定。
  • 这些颜色通道的值通常直接来自于传感器,如数码相机的感光元件,它们捕捉到的是自然界中的真实颜色信息。

伪彩色图像

  • 伪彩色图像(Pseudo Color Image)是通过对单个波段的灰度数据进行色彩映射来创建的,它不是基于实际的RGB数据。
  • 伪彩色图像通常用于将不可见光谱(如红外、紫外线或特定波长的光)或单波段数据转化为可见的彩色图像,以增强视觉效果或突出特定信息。
  • 例如,在遥感中,不同波段的灰度图像可以映射到不同的颜色,以帮助识别地物类型或特征。

方法1:通道拼接

# 3个灰度图像分别对应BGR通道
gray_image1 = cv2.imread("./imgP0.jpg", cv2.IMREAD_GRAYSCALE)
gray_image2 = cv2.imread("./imgP1.jpg", cv2.IMREAD_GRAYSCALE)
gray_image3 = cv2.imread("./imgP2.jpg", cv2.IMREAD_GRAYSCALE)

# 方法1:通道拼接
# 合并三个通道
color_from_grayscale_method1 = cv2.merge([gray_image1,gray_image2,gray_image3])
#color_from_grayscale_method1 = np.dstack((gray_image1, gray_image2, gray_image3))


方法2:伪彩色

# 方法2:伪彩色
imgP=cv2.applyColorMap(gray_image, cv2.COLORMAP_JET)

# 保存结果
cv2.imwrite('color_from_grayscale_method1.jpg', color_from_grayscale_method1)
cv2.imwrite('imgP.jpg', imgP)
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值