python - 需要帮助将两个 3 channel 图像组合成 6 channel 图像 Python

标签 python opencv numpy

我正在尝试使用 Python 将两个不同的 RGB 图像组合成一个 6 channel 图像(Tiff 是最好的)。

我有一张从普通相机拍摄的 RGB 图像,以及另一张 RGB 图像,它是基于 SfM 重建的法线贴图。这些图像具有相同的尺寸,我只需要将一张图像叠加在另一张图像上,这样我就可以根据组合的 channel 信息运行图像分类。

我一直在研究为此使用 openCV,但我对文档很感兴趣。我是一名地质学家,而不是程序员,所以我的数学技能和编程知识充其量只是平庸。

我一直在做一些挖掘,到目前为止我尝试过的是使用 OpenCV 为每个图像创建一个数组,然后使用 numpy 连接生成的矩阵并使用 PIL 将它们组合成一个图像。问题是图像并排显示两个图像或在另一个图像之上,而不是显示为 6 channel 图像。

我不认为 PIL 可以做我需要它做的事情,但我不确定如何使用 openCV mixChannels 函数或什至如何在 Python 中创建一个 MAT,因为 Mat::create 文档完全在C++。

RGB Image

Normals Image

我在这个网站上遇到了另一个话题,但据我所知,他们也没有得到真正的回答:

See here

最佳答案

NumPy 为您服务。

您的输入可能都是形状 (1200, 900, 3)(检查 .shape),并且您想要 (1200, 900, 6) 作为输出——这要求沿第三轴连接两个数组。因此

np.concatenate((im1, im2), axis=2) # axes are 0-indexed, i.e. 0, 1, 2

将完全按照您的意愿行事。

关于python - 需要帮助将两个 3 channel 图像组合成 6 channel 图像 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264816/

相关文章:

xml - Open CV 计算机视觉中的 haar 级联分类器内部是什么?

arrays - OpenCV - 图像数组或垫缓冲区

python - python中的最小二乘法

python - 迭代一个 numpy 矩阵行

python - 数组调整大小中的 numpy 数组

python - 编写一个 CPU 绑定(bind)脚本来衡量粗略的 CPU 性能

python - 使用 "current-directory"imports 导入模块

python - 如何从 python 中的原始输入创建 numpy 数组?

python - 无法执行相对导入(flask/pycharm)

c++ - 如何使用 opencv 将图像用作图案填充