【发布时间】:2017-09-04 05:21:16
【问题描述】:
这对我来说是一个持续的挑战。我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像。
到目前为止,我的代码如下:
import cv2
import numpy as np
im1 = cv2.imread('im1.jpg')
im2 = cv2.imread('im2.jpg')
merged = np.concatenate((im1, im2), axis=2) # creates a numpy array with 6 channels
cv2.imwrite('merged.tiff', merged)
我也尝试过使用 openCV 的 split() 和 merge() 方法并得到相同的结果
import cv2
import numpy as np
im1 = cv2.imread('im1.jpg')
im2 = cv2.imread('im2.jpg')
b1,g1,r1 = cv2.split(im1)
b2,g2,r2 = cv2.split(im2)
merged = cv2.merge((b1,g1,r1,b2,g2,r2))
cv2.imwrite('merged.tiff', merged)
当我运行 imwrite() 函数时,我收到以下错误:
OpenCV 错误:在 cv::imwrite_、文件 C:\builds\master_PackSlaveAddon-win32 中断言失败 (image.channels() == 1 || image.channels() == 3 || image.channels() == 4) -vc12-static\opencv\modules\imgcodecs\src\loadsave.cpp,第 455 行 回溯(最近一次通话最后): 文件“”,第 1 行,在 cv2.error: C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\imgcodecs\src\loadsave.cpp:455: 错误: (-215) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 在函数 cv::imwrite_两张图片的尺寸相同 (900X1200)。我认为 openCV 不能将超过 4 个通道 (RGBA) 写入 tiff 图像,而且我没有找到另一种方法来编码该图像。
我正在考虑创建自己的函数来编写带有适当标头的二进制数据,但这比我想的要深得多。
openCV 中是否有另一个我可以使用的函数,或者另一个库可以将此 numpy 数组写入 6 个通道的 tiff?
【问题讨论】: