YUV色空間の画像をJPEG画像に変換するにはどうすればよいですか?OpenCVでYUVを非可逆圧縮に変換する
私がcharに保存された生の画像データを持っている*変数:
char* frame = (char*)camera->getFrame(); // YUV colorspace image data
私の代わりにJPEG画像データにこれを変換する必要があります。私はストリームに送信するので、ディスクに保存したくありません。
YUV色空間の画像をJPEG画像に変換するにはどうすればよいですか?OpenCVでYUVを非可逆圧縮に変換する
私がcharに保存された生の画像データを持っている*変数:
char* frame = (char*)camera->getFrame(); // YUV colorspace image data
私の代わりにJPEG画像データにこれを変換する必要があります。私はストリームに送信するので、ディスクに保存したくありません。
OpenCV自体はこの機能をエクスポートしません。最もきれいなのは、エンコードにlibjpeg
を使用することです。
ファイルcvcolor.cppのためのOpenCVのsrcを確認します。これらの質問に対する答えを参照してください。これには色変換がすべて含まれています。
私はあなたがこの行の近くに、既存のルーチンを修正する提案:
/* BGR/RGB - >のYCrCb */
彼らはあなたがYUV符号化のために必要なものをほぼ正確です。もしその4:4:4としない4:2または4:2:1ます。#includeたまたま
JPGエンコーダおよびデコーダがgrfmt_jpeg.cppにあるJPG圧縮の1
" jpeglib.h」
あなたはこれらの直接
まあを呼び出すことができ、それは良いことではありません。私は埋め込まれたLinuxが組み込まれたシステム上でイメージをストリーミングする前にイメージを圧縮する必要があります。それはOpenCVを持っているだけで、私は追加のライブラリをインストールすることはできません。画像をストリーミングする前に画像を圧縮してサイズを軽くする方法はありますか?私はbadwidthを保存する必要があります。 gzipを使用していますか? –
私の2番目のリンクの回答では、OpenCVはファイルに書き込まずにJPEGにエンコードする機能を内部的に持っていることがわかります。 OpenCVの新しいバージョンでは、APIの一部ではないため、今後の予告なしに変更される可能性があります。特定のライブラリー設定で閉鎖されたシステムに固執している場合は、とにかくそれを気にしないかもしれません。さらに、ジップアルゴリズムは常に役立ちますが、50%以上の削減は期待できません。 – ypnos