2017-02-14 386 views
1

私はPythonで16ビットTIFFイメージ(26446 x 16688)を読み込もうとしています。 OpenCVのを使用すると、ブラックのみの画像読み込みで(すべての強度を0読み込み):OpenCV - Pythonで16ビットTIFFイメージを読む(センチネル1データ)

self.img = cv2.imread(self.filename, cv2.IMREAD_UNCHANGED) 

は、OpenCVの16ビットまたは大きな画像(〜840メガバイト)を処理することはできますか?回避策はありますか?

編集: cv2.imshow("output", self.img[0:600]) は黒い画像を表示します。

+0

** InageMagick **の 'identify'コマンドを実行して、TIFF内のディレクトリの最小/最大/平均/数を調べてみてください。ほとんどのLinuxにインストールされています。あなたは 'identify-verbose YourImage.tif'を指定したい –

+0

私は16ビットのTIFFファイルを小さくしてもOKです(' imshow'でも正しく表示されますが、8ビットに切り詰められているかもしれません - '34067,34983,35287')。 、dtype = uint16) ' - これは私のイメージがどのように終わるか(' cv2.IMREAD_UNCHANGED'なしでロードすると137,137,137)です。黒い画像をロードしているか、または実際の範囲が正確に16ビットではない(たとえば12ビットで、8ビットシフトするとほとんどゼロが生成されます)。画像のサイズ、または正しく動作します。画像を2の倍数で乗算するか、表示する前に正規化(ストレッチコントラスト)してみてください。または最初の600行は黒です... –

答えて

0

Andrew Paxsonの示唆しているように、別のライブラリを使用できます。 tiff画像を再生するための専用ライブラリがあります。

次のコードを同じものに使用してください。ご使用のシステムにtifがインストールされていることを確認してください。

import tifffile as tiff 
import matplotlib.pyplot as plt 

filename = 'Image.tif' 
img = tiff.imread(filename) 
plt.imshow(img) 
関連する問題