merge函数用于将多个单通道图像合并为一个多通道图像。它接受一个包含单通道图像的数组,并将这些图像按照顺序组合成一个输出图像,常用于将RGB或RGBA通道合并为一个彩色图像。
1 | cv2.merge(mv) |
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
mv |
一个包含多个单通道图像的可迭代对象(如元组或列表),每个元素应该是单通道的类型相同的图像,它们的形状(即宽度和高度)必须一致。 |
mv包含多个uint8类型的单通道图像,每个像素范围是0到255。 |
输入 |
错误码 |
描述 |
---|---|
INVALID_PARAM_MSG |
输入为空。 |
NOT_SUPPORT_MSG |
输入图像通道数不为3,图像非uint8类型。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import numpy as np import cv2 # 创建三个通道 img_bgr = [np.zeros((5, 5), dtype=np.uint8) for _ in range(3)] # 为每个通道赋值 img_bgr[0] = np.array([[255, 0, 0, 0, 255], [0, 255, 255, 255, 0], [0, 255, 0, 255, 0], [0, 255, 255, 255, 0], [255, 0, 0, 0, 255]], dtype=np.uint8) img_bgr[1] = np.array([[0, 255, 0, 255, 0], [255, 0, 0, 0, 255], [0, 0, 255, 255, 0], [255, 0, 0, 0, 255], [0, 255, 0, 255, 0]], dtype=np.uint8) img_bgr[2] = np.array([[0, 0, 255, 255, 0], [255, 255, 0, 0, 255], [255, 0, 0, 0, 255], [255, 255, 0, 0, 255], [0, 0, 255, 255, 0]], dtype=np.uint8) # 使用cv2.merge将三个通道合并成一个图像 merged_img = cv2.merge(img_bgr) # 显示合并后的图像 print(merged_img) |
运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | [[[255 0 0] [ 0 255 0] [ 0 0 255] [ 0 255 255] [255 0 0]] [[ 0 255 255] [255 0 255] [255 0 0] [255 0 0] [ 0 255 255]] [[ 0 0 255] [255 0 0] [ 0 255 0] [255 255 0] [ 0 0 255]] [[ 0 255 255] [ 0 0 0] [ 0 0 0] [ 0 0 0] [ 0 0 0]] [[ 0 0 0] [ 0 0 0] [ 0 0 0] [ 0 0 0] [255 0 0]]] |