0
点赞
收藏
分享

微信扫一扫

python opencv分离,合并彩色图像三通道

王栩的文字 2022-03-11 阅读 88

通道分离

分离方法有两个:opencv自带的分离方法split() ; 自己定义函数获取子矩阵

1.opencv自带分离三通道的函数split(),返回值是对应通道的灰度图

import cv2

img = cv2.imread(r'C:\Users\thorne\PycharmProjects\biyesheji\image\19.jpeg')
b, g, r = cv2.split(img)
#蓝色
cv2.imshow("Blue 1", b)
cv2.waitKey(0)
#绿色
cv2.imshow("Green 1", g)
cv2.waitKey(0)
#红色
cv2.imshow("Red 1", r)
cv2.waitKey(0)

2.定义函数来获取三个通道的子矩阵

# !/usr/bin/env python
# coding=utf-8
import cv2
#返回红色通道灰度图
def get_red(img):
redImg = img[:,:,2]
return redImg
#返回绿色通道灰度图
def get_green(img):
greenImg = img[:,:,1]
return greenImg
#返回蓝色通道灰度图
def get_blue(img):
blueImg = img[:,:,0]
return blueImg

img = cv2.imread(r'C:\Users\thorne\PycharmProjects\biyesheji\image\19.jpeg')
#蓝
b=get_blue(img)
cv2.imshow("Blue", b)
cv2.waitKey(0)
#绿
g=get_green(img)
cv2.imshow("Green", g)
cv2.waitKey(0)
#红
r=get_red(img)
cv2.imshow("Rad", r)
cv2.waitKey(0)

合并通道

import cv2
import numpy as np
img = cv2.imread(r'C:\Users\thorne\PycharmProjects\biyesheji\image\19.jpeg')
b, g, r = cv2.split(img)
#生成一个值为0的单通道数组
zeros = np.zeros(img.shape[:2], dtype = "uint8") #512x512
binary, full = cv2.threshold(zeros,-1,255,cv2.THRESH_BINARY)
# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0(黑)的数组填充
#蓝
cv2.imshow('blue',cv2.merge([b, zeros, zeros]))
cv2.waitKey(0)
#红
cv2.imshow('red',cv2.merge([zeros, zeros,r]))
cv2.waitKey(0)
#绿
cv2.imshow('green',cv2.merge([zeros, g,zeros]))
cv2.waitKey(0)
# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为255(白)的数组填充
cv2.imshow('blue',cv2.merge([b, full, full]))
cv2.waitKey(0)
cv2.imshow('red',cv2.merge([full, full,r]))
cv2.waitKey(0)
cv2.imshow('green',cv2.merge([full, g,full]))
cv2.waitKey(0)
举报

相关推荐

0 条评论