OpenCV/Patch to support WebP format on OpenCV 2.4.2

#multilang(ja){{

概要

OpenCV 2.4.2でWebP形式のフォーマットを扱えるようにするパッチです.
※OpenCV 2.4.2を対象としたパッチです.

ダウンロード

VersionFilenameSizeDateTypeDownload
1.0opencv2.4.2_webp_enable_patch_20120809.zip31.6 KB20120809ziphttp://www.atinfinity.info/opencv/extension/opencv2.4.2_webp_enable_patch_20120809.zip

変更履歴

VersionDate変更内容
1.020120809新規作成

使い方

WebPライブラリのビルド

  1. こちらからWebPのソースをダウンロードする.※今回はlibwebp-0.2.0.tar.gzを用いた.
  2. libwebp-0.2.0.tar.gzを展開する.
  3. Visual Studio コマンド プロンプトを起動する.
  4. コマンド プロンプトでlibwebp-0.2.0のディレクトリに移動する.
  5. 下記のコマンドを実行する(release用ライブラリが生成される).
    nmake /f Makefile.vc CFG=release-static RTLIBCFG=static OBJDIR=output
    
     ※Linux,Macの場合は以下のコマンドを実行する.
    make -f makefile.unix

OpenCV WebPパッチの適用

  1. 上記リンクからopencv2.4.2_webp_enable_patch_20120809.zipをダウンロードして展開します.
  2. 展開したディレクトリをOpenCVディレクトリに上書きします.  ※Linux,Macに適用する場合には,パッチ(下記ファイル)の改行コードをあらかじめnkfコマンド等でLFに変換して下さい.
  • opencv2.4.2_webp_enable_patch_20120809\CMakeLists?.txt
  • opencv2.4.2_webp_enable_patch_20120809\cmake\OpenCVFindLibsGrfmt?.cmake
  • opencv2.4.2_webp_enable_patch_20120809\cmake\OpenCVFindWebP.cmake
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\CMakeLists?.txt
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\include\opencv2\highgui\highgui.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\include\opencv2\highgui\highgui_c.h
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmt_webp.cpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmt_webp.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmts.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\loadsave.cpp

OpenCVのビルド

OpenCVをCMakeを用いてビルドする.

  1. WITH_WEBPにチェックを入れて,「Configure」ボタンを押す.
    cmake_with_webp_0001.png


  2. WEBP_INCLUDE_DIRSにWebPのソースがあるディレクトリを指定して,「Generate」ボタンを押す.
    cmake_with_webp_0002.png


おまけ(1)

下記のような設定をすることでデコード時のquality(0~100)を指定できる.
※以下の例では最大品質の100を指定.

C API

int param[2];
param[0] = CV_IMWRITE_WEBP_QUALITY;
param[1] = 100;
cvSaveImage("img.webp", img, &param[0]);

C++ API

vector<int> param = vector<int>(2);
param[0] = CV_IMWRITE_WEBP_QUALITY;
param[1] = 100;
imwrite("img.webp", img, param);

おまけ(2)

下記のような設定をすることでlossless圧縮を指定できる.

C API

int param[2];
param[0] = CV_IMWRITE_WEBP_LOSSLESS;
param[1] = 1;
cvSaveImage("img.webp", img, &param[0]);

C++ API

vector<int> param = vector<int>(2);
param[0] = CV_IMWRITE_WEBP_LOSSLESS;
param[1] = 1;
imwrite("img.webp", img, param);

制限事項

  • Windows 32bit/Mac 64bitのみで動作検証.
  • 保存対象画像となるdepthは8Uのみ.

注意点

  • CV_IMWRITE_WEBP_QUALITYによる指定が無い場合,デフォルトで95が指定される.

}}

#multilang(en){{

Abstract

This page describes the method to use WebP format on OpenCV 2.4.2.

Download

VersionFilenameSizeDateTypeDownload
1.0opencv2.4.2_webp_enable_patch_20120809.zip31.6 KB20120809ziphttp://www.atinfinity.info/opencv/extension/opencv2.4.2_webp_enable_patch_20120809.zip

ChangeLog?

VersionDateChanges
1.020120809First Release

Usage

Build WebP library

  1. Please download WebP source code from Official page. I used libwebp-0.2.0.tar.gz for testing.
  2. Please extract libwebp-0.2.0.tar.gz.
  3. Please start Visual Studio command prompt.
  4. Please move to libwebp-0.2.0 directory.
  5. Please run the following command to make WebP library(release build).
    nmake /f Makefile.vc CFG=release-static RTLIBCFG=static OBJDIR=output
     If you use on Linux or Max, please run the following command to make WebP library
    make -f makefile.unix

Applying WebP patch

  1. Please download opencv2.4.2_webp_enable_patch_20120809.zip. And,extract this file.
  2. Please overwrite to OpenCV's directory.


If you want to apply this patch to OpenCV-2.4.2(Linux or Mac), please convert newline character of these file to LF from CRLF.

  • opencv2.4.2_webp_enable_patch_20120809\CMakeLists?.txt
  • opencv2.4.2_webp_enable_patch_20120809\cmake\OpenCVFindLibsGrfmt?.cmake
  • opencv2.4.2_webp_enable_patch_20120809\cmake\OpenCVFindWebP.cmake
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\CMakeLists?.txt
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\include\opencv2\highgui\highgui.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\include\opencv2\highgui\highgui_c.h
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmt_webp.cpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmt_webp.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\grfmts.hpp
  • opencv2.4.2_webp_enable_patch_20120809\modules\highgui\src\loadsave.cpp

Build OpenCV

Please build OpenCV using CMake.

  1. Please check WITH_WEBP and push Configure button.
    cmake_with_webp_0001.png


  2. Please specify WebP source's directory to WEBP_INCLUDE_DIRS and push Generate button.
    cmake_with_webp_0002.png


Tips(1)

You can specify the compression quality(min:0, max:100) by the following settings.

C API

int param[2];
param[0] = CV_IMWRITE_WEBP_QUALITY;
param[1] = 100;
cvSaveImage("img.webp", img, &param[0]);

C++ API

vector<int> param = vector<int>(2);
param[0] = CV_IMWRITE_WEBP_QUALITY;
param[1] = 100;
imwrite("img.webp", img, param);

Tips(2)

You can specify the lossless compression by the following settings.

C API

int param[2];
param[0] = CV_IMWRITE_WEBP_LOSSLESS;
param[1] = 1;
cvSaveImage("img.webp", img, &param[0]);

C++ API

vector<int> param = vector<int>(2);
param[0] = CV_IMWRITE_WEBP_LOSSLESS;
param[1] = 1;
imwrite("img.webp", img, param);

Limitation

  • I have only tested this environment.
    • Windows 32bit and Mac 64bit
  • Save image depth supports 8U only.

Notes

  • If you does not specify the quality by CV_IMWRITE_WEBP_QUALITY, 95 is specified by default. }}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-09-10 (月) 22:18:00 (4244d)