数時間の検索の後、thisリンクに行きました。少しの背景情報が続きます。PythonのRawバイナリイメージデータからPNGへ
実行中の組み込みデバイスのライブフレームをハードウェアデバッガでキャプチャしています。キャプチャされたフレームは、ヘッダまたはフォーマットなしでraw binary fileとして保存されます。上記のリンクを見て、NumPYとMatplotlibを完全に理解した上で、生のバイナリデータを画像に変換することができました。これは、生のバイナリファイルへのリンクがいずれかを助けるかどうか分からないので、重要です。
私はこのコードを使用:カラーマップがグレースケールであるため、ここで
import matplotlib.pyplot as plt # study documentation
import numpy as np # " "
iFile = "FramebufferL0_0.bin" # Layer-A
shape = (430, 430) # length and width of the image
dtype = np.dtype('<u2') # unsigned 16 bit little-endian.
oFile = "FramebufferL0_0.png"
fid = open(iFile, 'rb')
data = np.fromfile(fid, dtype)
image = data.reshape(shape)
plt.imshow(image, cmap = "gray")
plt.savefig(oFile)
plt.show()
を、Iが示していた画像が白黒である(右?)。実際にキャプチャされたフレームは白黒ではありません。つまり、私の組み込み機器で見る画像は「カラフル」です。
私の質問は、生のバイナリファイルから各ピクセルの実際の色をどのように計算できますか?生のバイナリからイメージの実際のカラーマップを取得する方法はありますか?私はthisの例を調べましたが、R、G、Bチャンネル(およびアルファも)を計算できれば、正確な画像を再現することができます。コード例は非常に役立つでしょう。
"実際の画像には色の情報がありますが、データを取得しているときには4つのチャンネルのうちの1つしか取得できません。"はい、それは問題だと思います。どのようにして各チャンネルを別々に取得できますか? 間違ったバイナリファイルを貼り付けましたが、正しいです:http://pastebin.com/FGEDRbjC これは430 * 430(サイズ== 184990)の画像形状と一致しています。 –