如何在opencv中将RGB图像与灰色图像组合?

时间:2017-03-21 06:50:42

标签: python numpy image-processing opencv3.0 scikit-image

我将这个链接用于组合两个图像,如果两个图像都是RGB格式化的话,它就可以工作

Combining Two Images with OpenCV

问题是如何将RGB图像与灰色图像组合,因为RGB图像是三维的,但灰色图像是两个维度?

1 个答案:

答案 0 :(得分:1)

RGB图像是三维的,而灰度图像是二维的。为了使组合成为可能,您需要为灰度图像添加一个维度。如果x是二维数组x,则将其转换为三维数组的最简单方法是x[:, :, None]。或者,您可以使用NumPy的atleast_3D

下面的代码使用NumPy和scikit-image库完成工作:

import numpy as np
from skimage import io

rgb = io.imread('https://i.stack.imgur.com/R6X5p.jpg')
gray = io.imread('https://i.stack.imgur.com/f27t5.png')

rows_rgb, cols_rgb, channels = rgb.shape
rows_gray, cols_gray = gray.shape

rows_comb = max(rows_rgb, rows_gray)
cols_comb = cols_rgb + cols_gray
comb = np.zeros(shape=(rows_comb, cols_comb, channels), dtype=np.uint8)

comb[:rows_rgb, :cols_rgb] = rgb
comb[:rows_gray, cols_rgb:] = gray[:, :, None]

io.imshow(comb)

lions

重要的是要注意,上面的示例假设两个图像都是np.uint8类型。如果没有,您应该使用适当的类型转换。