【问题标题】:How to combine a RGB image with a Grayed image in opencv?如何在opencv中将RGB图像与灰度图像结合起来?
【发布时间】:2017-08-12 17:03:53
【问题描述】:

我参考了这个链接来合并两个图像,如果两个图像都是 RGB 格式,它就可以工作

Combining Two Images with OpenCV

问题是如何将RGB图像与灰度图像结合起来,因为RGB图像是三维的,而灰度图像是二维的?

【问题讨论】:

  • 那么,结果将是一个 4 列的 3D 数组?
  • 您能否使用 imgcol=cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 将您的灰度图像转换为 RGB 图像(图像在视觉上是灰色的,但在结构上是 rgb)或者您就是这样试图避免?
  • @Divakar,3列
  • 您的图像数组已经是一个包含 3 列的 3D 数组。你怎么能添加一个灰色的图像,仍然保持 3 列?如果可能,请添加mcve
  • @Divakar,我想创建一个新图像,将两个图像粘贴到这个新图像

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


【解决方案1】:

RGB 图像是 3 维的,而灰度图像是 2 维的。为了使组合成为可能,您需要向灰度图像添加一维。如果x 是一个二维数组x,那么将其转换为一个3 维数组的最简单方法是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。如果不是,您应该使用适当的类型转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2016-09-16
    相关资源
    最近更新 更多