2017-12-15 19 views
0

LinuxでOpenCVを使用して通常の8ビットJPGを読み込んで処理します。Linux上で12ビットjpgを変換する方法

特定のハードウェアから12ビットのJPGを受信して​​います。 OpenCVはこれらを読むことはできませんし、私が試したことはありません。私たちがこれらを処理できるようにするためのlinux用のユーティリティやライブラリはありますか?おそらく8ビット形式に変換しますか?

最新のlibjpegは、12ビットのJPGをコンパイル時のオプションとしてサポートしています。つまり、通常の8ビットと12ビットのjpgを同時にサポートするソフトウェアを書くことは容易ではありません。しかし、誰かがこれをすでに解決しているのだろうかと思っています。

+0

imagick:convert orig.jpg -depth 8 output.jpg – tcpack4

+0

画像を読み込むときに 'CV_LOAD_IMAGE_ANYDEPTH'を設定していますか? – emcconville

+0

convertは "convert.im6:サポートされていないJPEGデータの精度12' cam0_000000_0.jpg '@ error/jpeg.c/JPEGErrorHandler/316 "と表示しています。これは、画像magickのQ16(16ビット)版です。 – Philip

答えて

1

私はあなたの提案したテクニックをいくつか改良しました。

まず、あなたはあなたのプロセスを簡素化し、djpegを行うことによってインストールしてImageMagickのに依存することの必要性を取り除くことができOpenCVのは、任意のライブラリなしで、とにかくそれらを読むことができるので、PPMファイルを発します。だからあなたのコマンドはなる:あなたがいることをすれば

djpeg > result.ppm < some12bitBadBoy.jpg 

第二に、あなたが実際に12月16日ビットPPMファイルを取得し、あなたがプロセスに多くの色解像度を保持します!とらえどころのない12ビットのJPEGを見つけようとして他の誰のために

identify -verbose result.ppm 

Image: a.ppm 
    Format: PPM (Portable pixmap format (color)) 
    Mime type: image/x-portable-pixmap 
    Class: DirectClass 
    Geometry: 227x149+0+0 
    Units: Undefined 
    Type: TrueColor 
    Endianess: Undefined 
    Colorspace: sRGB 
    Depth: 12-bit     <--- 
    Channel depth: 
    Red: 12-bit     <--- 
    Green: 12-bit     <--- 
    Blue: 12-bit     <--- 
    Channel statistics: 
    Pixels: 33823 
    Red: 
     min: 514 (0.125519) 
     max: 4095 (1) 
     mean: 2350.62 (0.574022) 
     standard deviation: 1102.04 (0.269119) 
     kurtosis: -1.39076 
     skewness: 0.13609 
     entropy: 0.971255 
    Green: 
     min: 305 (0.0744811) 
     max: 4095 (1) 
     mean: 1453.69 (0.354991) 
     standard deviation: 852.147 (0.208095) 
     kurtosis: 2.42348 
     skewness: 1.77043 
     entropy: 0.918006 
    Blue: 
     min: 213 (0.0520147) 
     max: 4095 (1) 
     mean: 1309.16 (0.319698) 
     standard deviation: 890.453 (0.217449) 
     kurtosis: 2.74961 
     skewness: 1.92239 
... 
... 

、私は最終的には1 hereを見つけ


更なる提案は、あなたのワークフローを簡素化するために、あなたの画像記憶領域上のファイルシステムイベントを監視するinotifyman page)を使用するのが良いかもしれません。したがって、新しいJPEGが解析のために到着すると効果的に通知を受けることができます.12ビットであれば自動的にチェックし、対応するPPMファイルを生成し、12ビットJPEGをディスク上の他の保持領域に移動しますそれを参照する必要があります。

Macをご使用の場合、fswatchhomebrewでインストールできます。

+0

まだ12ビットのlibjpegをコンパイルする必要がありますが、これは避けたかったのですが、ここでPPMについての洞察は有効で有用です。受け入れられました。 – Philip

+0

申し訳ありませんもっと直接的なものは思い付きませんでした。ネット上を歩き回り、何か良いものを考えればpingすることを心に留めておきます。あなたのプロジェクトに幸運を祈る! –

関連する問題