これは私にとって一変している課題です。私はopenCVを使って2つの3つのRGBイメージを1つの6チャンネルTIFFイメージに結合しようとしています。次のようにOpenCV Pythonで4チャンネル以上の画像を書き込む
これまでのところ、私のコードは次のとおりです。
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のの分割を使用してみました)及び()メソッドをマージし、私が実行したときと同じ結果
に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 Error: Assertion failed (image.channels() == 1 || image.channels() == 3 || image.channels() == 4) in cv::imwrite_, file C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\imgcodecs\src\loadsave.cpp, line 455 Traceback (most recent call last): File "", line 1, in cv2.error: C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\imgcodecs\src\loadsave.cpp:455: error: (-215) image.channels() == 1 || image.channels() == 3 || image.channels() == 4 in function cv::imwrite_
両方の画像の寸法が同じです(900X1200)。私はopenCVが4つ以上のチャンネル(RGBA)をTIFF画像に書き込むことができないと思っています。この画像をエンコードする別の方法を見つけるのは無理です。
私は自分の関数を作成して適切なヘッダーを持つバイナリデータを作成するというアイデアを思いついていますが、それは私が行きたいよりも深いところです。
私はそれが動作するように使うことができるopenCVの別の関数、またはこのnumpyの配列を6チャンネルのtiffに書き込むことができる別のライブラリがありますか? OpenCVのがlibpng
使用
ありがとうございます。それは私が期待していたものではありませんが、私が望むものを正確に行うことができます。私は前にこのように考えなかった。 – tpubbsGIS