我将这个链接用于组合两个图像,如果两个图像都是RGB格式化的话,它就可以工作
Combining Two Images with OpenCV
问题是如何将RGB图像与灰色图像组合,因为RGB图像是三维的,但灰色图像是两个维度?
答案 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)
重要的是要注意,上面的示例假设两个图像都是np.uint8
类型。如果没有,您应该使用适当的类型转换。