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>


分享到:


相關文章: