当前位置:   article > 正文

OpenCv对于图片的RGB三色通道的提取与合并_图片rgb颜色模式提取三通道分量

图片rgb颜色模式提取三通道分量

目录

一、前言

二、使用OpenCV提取RGB颜色通道

三、合并RGB颜色通道


一、前言

当涉及到图像处理计算机视觉时,颜色通道(RGB通道)的提取是一个重要的步骤。而OpenCV是一个强大的计算机视觉库,它提供了许多功能,包括图像处理

什么是RGB颜色通道?

在数字图像中,颜色通道指的是构成图像的基本颜色成分。RGB通道代表红色(R)、绿色(G)和蓝色(B)通道。这三个通道组合在一起创建了图像的彩色。每个通道包含了对应颜色的亮度信息。

二、使用OpenCV提取RGB颜色通道

首先,确保你已经安装了OpenCV库。你可以使用以下命令来安装它:

pip install opencv-python

 接下来,我们来看看如何提取RGB颜色通道:

注意:在OpenCV中,图像通道的顺序是按BGR(蓝绿红)顺序排列,而不是通常的RGB(红绿蓝)顺序。这是OpenCV的一个特殊之处,你需要牢记这一点,以避免在处理图像时出现颜色通道的混淆。

  1. import cv2
  2. # 1. 读取图像
  3. a = cv2.imread(r'./timg98.jpg')
  4. # 2. 提取颜色通道
  5. a1 = a[:, :, 0] # 蓝色通道(B通道)
  6. a2 = a[:, :, 1] # 绿色通道(G通道)
  7. a3 = a[:, :, 2] # 红色通道(R通道)
  8. # 或者使用 cv2.split() 来分离颜色通道
  9. b, g, r = cv2.split(a)
  10. # b 包含蓝色通道
  11. # g 包含绿色通道
  12. # r 包含红色通道
  13. # 3. 显示蓝色通道的图像
  14. cv2.imshow('result', b)
  15. # 4. 设置窗口显示时间,单位为毫秒(这里设置为100秒,可以根据需要调整)
  16. cv2.waitKey(100000)
  17. # 5. 关闭所有窗口
  18. cv2.destroyAllWindows()

运行结果:

注意:我们这里是显示蓝色通道的图像,但是所显示的图片确实灰色的,那是因为只显示蓝色通道时,实际上是将蓝色通道作为亮度值,而将绿色和红色通道设置为默认的最大值,也就是255。这会导致图像呈现为灰色。

想要展示只包含蓝色通道信息的彩色图像,可以将图像中的绿色通道和红色通道设为0,即移除绿色和红色,只保留蓝色。

可以通过以下代码实现:

  1. # 导入OpenCV库
  2. import cv2
  3. # 从指定路径加载一张图片('./timg98.jpg'是图片文件的路径)
  4. a = cv2.imread(r'./timg98.jpg')
  5. # 复制原始图像以避免更改原始图像
  6. a_new = a.copy()
  7. # 将图像中的绿色通道和红色通道设为0,即移除绿色和红色,只保留蓝色
  8. a_new[:,:,1] = 0 # 绿色通道设为0
  9. a_new[:,:,2] = 0 # 红色通道设为0
  10. # 创建一个窗口来显示修改后的图像,并将其命名为'result'
  11. cv2.imshow('result', a_new)
  12. # 等待用户按键触发,这里设置等待时间为100000毫秒(100秒)
  13. # 如果用户在这个时间内按下任意键,程序将继续执行
  14. # 如果等待时间为0(cv2.waitKey(0)),则会一直等待用户按键
  15. cv2.waitKey(100000)
  16. # 关闭所有打开的图像窗口
  17. cv2.destroyAllWindows()

运行结果:

三、合并RGB颜色通道

成功提取RGB颜色通道后,我们又想把它们合并,就可以通过以下代码实现:

  1. import cv2
  2. # 1. 读取图像
  3. a = cv2.imread(r'./timg98.jpg')
  4. # 2. 提取颜色通道
  5. a1 = a[:, :, 0] # 蓝色通道(B通道)
  6. a2 = a[:, :, 1] # 绿色通道(G通道)
  7. a3 = a[:, :, 2] # 红色通道(R通道)
  8. # 或者使用 cv2.split() 来分离颜色通道
  9. b, g, r = cv2.split(a)
  10. # b 包含蓝色通道
  11. # g 包含绿色通道
  12. # r 包含红色通道
  13. # 使用cv2.merge()函数将三个通道重新合并成一个图像
  14. img = cv2.merge((b, g, r))
  15. #img = cv2.merge((a1,a2,a3)) 或者使用这行代码
  16. # 创建一个窗口来显示合并后的图像,并将其命名为'result'
  17. cv2.imshow('result', img)
  18. # 等待用户按键触发,这里设置等待时间为100000毫秒(100秒)
  19. # 如果用户在这个时间内按下任意键,程序将继续执行
  20. # 如果等待时间为0(cv2.waitKey(0)),则会一直等待用户按键
  21. cv2.waitKey(100000)
  22. # 关闭所有打开的图像窗口
  23. cv2.destroyAllWindows()

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/438831?site
推荐阅读
相关标签
  

闽ICP备14008679号