Python OpenCV 圖像通道分離和合並

1、圖像通道分離有兩種方法,一個是使用OpenCV自帶的split 函數,還有一個是使用Numpy數組來分離通道.


Python筆記_「009」_Python OpenCV 圖像通道分離和合並


使用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>


分享到:


相關文章: