【问题标题】:Need help combining two 3 channel images into 6 channel image Python需要帮助将两个 3 通道图像组合成 6 通道图像 Python
【发布时间】:2017-04-06 20:04:59
【问题描述】:

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

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

我一直在考虑为此使用 openCV,但我对文档感到困惑。我是地质学家,而不是程序员,所以我的数学技能和编程知识充其量只是平庸。

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

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

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

See here

【问题讨论】:

  • 做:np.dstack((img1,img2)).
  • 这个图像分类程序需要什么样的文件?
  • 它需要多通道 tiff。

标签: python opencv numpy


【解决方案1】:

NumPy 满足您的需求。

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

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

会做你想做的事。

【讨论】:

  • 非常感谢。它让我更进一步,我使用的是axis = 0和axis = 1。但是,既然我有了它,我该如何将它导出到我可以使用的图像中? PIL 不允许我在其上使用 Image.fromarray() 方法。
  • 您必须找到合适的 TIFF 库,例如 github.com/pearu/pylibtifflfd.uci.edu/%7Egohlke/code/tifffile.py.html。我不知道哪个库适合您的情况,因为我对您问题的这方面不太熟悉。
  • 为什么要保存6通道图像?您不太可能使用任何常见的图像查看器来查看它。
  • 我没有使用普通查看器,我使用 ENVI 对其进行多光谱分析。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2017-07-14
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多