彩色图像通道分离+融合
前段时间做过几个彩色图像多通道特征提取的研究,所以在这里记录一下彩色图像通道分离+融合的代码。import cv2import numpy as npfrom matplotlib import pyplot as pltimg = cv2.imread('/lena.jpg',cv2.IMREAD_COLOR)#以彩色形式读取图像#函数分离图像三通道b, g, r = cv2.split(img
·
前段时间做过几个彩色图像多通道特征提取的研究,所以在这里记录一下彩色图像通道分离+融合的代码。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('/lena.jpg',cv2.IMREAD_COLOR) #以彩色形式读取图像
#函数分离图像三通道
b, g, r = cv2.split(img)
cv2.imshow("Blue 1", b)
cv2.imshow("Green 1", g)
cv2.imshow("Red 1", r)
cv2.waitKey (0)
cv2.destroyAllWindows()
#手动分离图像三通道
b = img[:, :, 0] # 第一个通道的值
g = img[:, :, 1] # 第二个通道的值
r = img[:, :, 2] # 第三个通道的值
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像三通道分离后,两两通道重新组合:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('/lena.jpg',cv2.IMREAD_COLOR) #以彩色形式读取图像
#任意两通道组合
zeros = np.zeros(img.shape[:2], dtype = "uint8")# 生成一个值为0的单通道数组
# 分别扩展B、G、R成为三通道。另外两个通道用上面的值为0的数组填充
bb = cv2.merge([b, zeros, zeros])
gg = cv2.merge([zeros, g, zeros])
rr = cv2.merge([zeros, zeros, r])
gr = cv2.merge([zeros, g, r])
br = cv2.merge([b, zeros, r])
bg = cv2.merge([b, g, zeros])
#显示图像
cv2.imshow("bb", bb)
cv2.imshow("gg", gg)
cv2.imshow("rr", rr)
cv2.imshow("gr", gr)
cv2.imshow("br", br)
cv2.imshow("bg", bg)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像三通道分离后再融合以及单通道显示:
import numpy as np
import matplotlib.pyplot as plt
import cv2
img = cv2.imread('lena.jpg',cv2.IMREAD_COLOR)
# 将彩色rgb图像拆分为r,g,b
r,g,b = np.dsplit(img,3)
# 将r,g,b图像合并为彩色rgb图像
rgb_img = np.dstack((r,g,b))
plt.figure(figsize=(10,12),dpi= 80)
plt.subplot(221)
plt.imshow(r,cmap='gray')
plt.xlabel('r')
plt.subplot(222)
plt.imshow(g,cmap='gray')
plt.xlabel('g')
plt.subplot(223)
plt.imshow(b,cmap='gray')
plt.xlabel('b')
plt.subplot(224)
plt.imshow(rgb_img)
plt.xlabel('rgb')
plt.show()

更多推荐


所有评论(0)