1、圖像通道分離有兩種方法,一個是使用OpenCV自帶的split 函數,還有一個是使用Numpy數組來分離通道.
使用OpenCV 自帶 split函數
<code>#!/usr/bin/env python
# encoding: utf-8
import cv2
import numpy as np
img = cv2.imread("mini.jpg")
b,g,r = cv2.split(img)
cv2.imshow("Blue",r)
cv2.imshow("Red",g)
cv2.imshow("Green",b)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 也可以單獨返回其中一個通道
b = cv2.split(img)[0] # B通道
g = cv2.split(img)[1] # G通道
r = cv2.split(img)[2] # R通道 /<code>
使用Numpy 數組分離圖像通道
<code>#!/usr/bin/env python
# encoding: utf-8
import cv2
import numpy as np
#使用Numpy 數組來實現圖像通道分離
img = cv2.imread("mini.jpg")
# 創建3個跟圖像一樣大小的矩陣,數值全部為0
b = np.zeros((img.shape[0],img.shape[1]),dtype=img.dtype)
g = np.zeros((img.shape[0],img.shape[1]),dtype=img.dtype)
r = np.zeros((img.shape[0],img.shape[1]),dtype=img.dtype)
#複製圖像通道里的數據
b[:,:] = img[:,:,0] # 複製 b 通道的數據
g[:,:] = img[:,:,1] # 複製 g 通道的數據
r[:,:] = img[:,:,2] # 複製 r 通道的數據
cv2.imshow("Blue",b)
cv2.imshow("Red",r)
cv2.imshow("Green",g)
cv2.waitKey(0)
cv2.destroyAllWindows() /<code>
2、通道合併通道合併也有兩種方法。
一種是使用OpenCV自帶的 merge 函數
<code>merged = cv2.merge([b,g,r]) #前面分離出來的三個通道 /<code>
使用Numpy 方法
<code>mergedByNp = np.dstack([b,g,r]) /<code>
閱讀更多 AITech 的文章