5

過去に、32 ビットの .bmp ファイルを処理するために OpenCv を使用し、成功した結果を得ました。Opencv 関数を使用して 12 ビットのデータを処理するにはどうすればよいですか? 私の処理は、主に 1000 ピクセルのいくつかを見つけるなどの操作になります。

編集 私が取得しているファイルは.binファイルです。そして、画像のピクセルは次のように配置されます(ファイルにはすべてのコンテンツが次のように含まれています。白い紙の写真を撮っています):

(FF)(0F)(FF)(0F)(FF)(0F)(FF)(0F)(FF)(0F)(FF)(0F)(FF)(0F)

明らかに、これで 16 ビット処理を行うことができます。

4

4 に答える 4

4

この画像を 16 ビット処理したかったのです。その秘密は、別の質問で明かされます。

16ビットの場合、bmpではなくPNGに切り替える必要があります!

このドキュメントには、OpenCV で 16 ビット PNG を使用できると書かれています

于 2012-06-18T17:14:03.107 に答える
3

私の知る限り、OpenCV は 8、16、および 32 ビットのイメージのみを正しく処理しています。

やりたいことに応じて、

  • 12ビットの画像を8ビットに変換する(12ビットのベイヤーでエンコードされた画像であると仮定)
  • または、値をゼロで埋めて手動で 16 に変換します。私がここで見つけたものから、これはあなたのイメージですでに行われている可能性があります。

何かを行う前に、ピクセルが画像に正確にどのように配置されているかを詳しく調べることをお勧めします。これは、何が最善かを知るのに大いに役立ちます。これを行う良い方法は、blessまたは別の 16 進エディターを使用することです。

編集:

here から取得、あなたのデータは(私が思うに)パディング付きの16ビットでエンコードされています

Opencv を使用して 16 ビットから 8 ビットに変換するだけで、JPEG への変換中に行われることになります。少なくとも試しましたか?

于 2012-06-18T08:23:47.840 に答える
-1

OpenCV のどの機能も 12 ビット データをサポートしていません。

データを「char」として読み取ります。3 文字 = 2x12 ビット データ。このデータは、便利に 16 ビット データに変換できます。

  1. char1 を 4 だけ左にシフトし、short1 に格納します。
  2. (char2 & 0xF0) を追加して、short1 の最初の 12 ビット データを取得します。
  3. (char2 & 0x0F) を 8 だけ左にシフトし、short2 に格納します。
  4. char3 で追加して、short2 で次の 12 ビット データを取得します。
于 2012-06-18T08:37:28.063 に答える