图像通道分离与合并操作

图像通道分离与合并操作

文章目录

  • 图像通道分离与合并操作
  • 一、图片的通道分离与合并
  • 二、编程要求


一、图片的通道分离与合并

对于一幅的数字图像,我们看到的是一幅真正的图片,但是对于计算机,这副图像只是一个数字矩阵。

计算机存储的数字图像的本质是一个多维矩阵。一副尺寸为M × N 的图像可以用一个 M × N × c的矩阵来表示,矩阵元素(M, N)的值表示这个位置上的像素的亮度,c表示的就是通道数。

描述一个像素点,如果用灰度描述它,就是单通道,即c=1。光学三原色(红、绿、蓝, RGB )能够组成任何的颜色,如果c=3,说明图片在RGB颜色模式,每一个三原色都是一个通道。

注意:

  • 图像通道仅仅在显示的时候才有意义;
  • 卷积神经网络里面的通道是指卷积核个数,与本任务讨论的通道不同。

在 OpenCV 中,可以通过以下的方式将三原色的三个通道分开:

B,G,R = cv2.split(img)

合并通道可以通过下面代码来实现:

img1 = cv2.merge((B,G,R))

如果使用B,G,R = cv2.split(img),那么得到的是 B,G,R 单独通道的灰度图。因此,只有同时使其它两个通道的“亮度”为 0 ,才会单独显示得到的 B、G、R 图像。

二、编程要求

实现图像通道分离与合并操作。具体要求如下:

  1. 对于已经读取的图片变量img,分离它的R、G、B三个通道,并将三个通道按提示的指定路径保存成图片;
  2. 合并上一步中分离的三个通道,并按提示的指定路径保存R通道的彩色图像。
import cv2


# 实现图像颜色通道分离和保存
def task2():
    filepath = "/data/workspace/myshixun/task2/"
    img = cv2.imread( filepath + 'pic.jpg')
    
    # 请分离图像的B,G,R通道,并保存到给定filepath下的out文件夹,
    # 三个通道分别保存为r.png、g.png、b.png
    ########## Begin ##########
    b,g,r = cv2.split(img)
    cv2.imwrite(filepath+'out/r.png',r)
    cv2.imwrite(filepath+'out/g.png',g)
    cv2.imwrite(filepath+'out/b.png',b)
    
    ########## End ##########
    
    # 请合并分离的通道,并在out文件夹下保存红色通道的彩色图像color_r.png
    ########## Begin ##########
    img1 = cv2.merge((b,g,r))  
    img1[:,:,0]=0
    img1[:,:,1]=0
    cv2.imwrite(filepath+'out/color_r.png',img1)
    
    ########## End ##########

你可能感兴趣的:(计算机视觉,计算机视觉)