【Opencv3+Python3入门(5)彩色图像通道分离与合并】

首先要了解,在Opencv中的图像数据通道存储顺序是BGR而不是RGB,和我们常规的显示通道顺序正好相反,可以通过结合matplotlib进行验证,并且进而实现对图像的通道分离与合并操作。

彩色图像通道分离与合并

#5,图像通道分离与合并
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

def split_Image(image):
    plt.title("Saber")
    plt.imshow(image)
    b,g,r=cv.split(image)
    cv.imshow("b",b)
    cv.imshow("g",g)
    cv.imshow("r",r)
    return b,g,r
def merge_Image(b,g,r):
    #merge三通道拼接
    mergedImage=cv.merge([b,g,r])
    print(mergedImage.shape)
    cv.imshow("mergedImage",mergedImage)
srcImage3=cv.imread(r'F:\OutputResult\SrcImage\saber18.jpg')
cv.namedWindow("Saber",1)
cv.imshow("Saber",srcImage3)
b,g,r=split_Image(srcImage3)
merge_Image(b,g,r)
cv.waitKey(0)
cv.destroyAllWindows()

主要涉及函数:

cv.split(src):输入原图像,返回其各自的通道内对应的数组元素的值。

cv.merge(mv):要合并的矩阵的参数mv输入向量;mv中的所有矩阵必须相同尺寸和深度相同。输出通道数量将是矩阵数组中的通道总数。

程序运行结果如下:

matplotlib绘图显示原图像:

可以发现通道是正好相反的。

如果相对某一通道的所有像素值进行操作,直接按照数组形式赋值即可:

下面是分别对B,G,R通道的像素值赋值为0:

#图像通道像素值操作
import cv2 as cv
import numpy as np
srcImage3=cv.imread(r'F:\OutputResult\SrcImage\saber18.jpg')
#B,G,R三通道分别赋值为0:
#srcImage3[:,:,0]=0
#srcImage3[:,:,1]=0
srcImage3[:,:,2]=0
cv.namedWindow("Saber",1)
cv.imshow("Saber",srcImage3)
cv.waitKey(0)
cv.destroyAllWindows()

程序运行效果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值