【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()

程序運行效果如下:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章