OpenCVのJPEG読み書きにlibjpeg turboを使う - atinfinity/lab GitHub Wiki
libjpeg turboはSIMD命令を用いた実装により高速化が図られているJPEG圧縮・展開ライブラリです.OpenCVにおけるJPEG圧縮・展開は通常libjpegを用いますが,ここではlibjpeg turboを用いる方法を紹介します.
- 2015/8/16時点で最新のlibjpeg-turbo 1.4.1を入手します.
Windows 64bitの場合,インストーラはlibjpeg-turbo-1.4.1-vc64.exe
です
(Windows 32bitの場合はlibjpeg-turbo-1.4.1-vc.exe
). -
libjpeg-turbo-1.4.1-vc64.exe
を実行してインストールします.
この例ではデフォルトのインストール先であるC:/libjpeg-turbo64
にインストールします. - OpenCVをビルドするためにcmake-guiを起動します.
- cmake-guiで
WITH_JPEG
をONにします. - cmake-guiで
BUILD_JPEG
をOFFにします. - cmake-guiで
JPEG_INCLUDE_DIR
エントリをPATHとして追加します.
Valueはインストール先のインクルードディレクトリC:/libjpeg-turbo64/include
とします. - cmake-guiで
JPEG_LIBRARY
エントリをFILEPATHとして追加します.
ValueはインストールしたライブラリC:/libjpeg-turbo64/lib/jpeg-static.lib
とします. - cmake-guiで
Configure
ボタンを押下します. - cmake-guiで
Generate
ボタンを押下し,OpenCV.slnを生成します.
コマンドラインでCMakeを実行する場合は以下のようなオプションを付与することで同様のことが行えます.
-D WITH_JPEG=ON ^
-D BUILD_JPEG=OFF ^
-D JPEG_INCLUDE_DIR="C:/libjpeg-turbo64/include" ^
-D JPEG_LIBRARY="C:/libjpeg-turbo64/lib/jpeg-static.lib" ^
C:/libjpeg-turbo64/lib
には以下の4つのライブラリが含まれています.
- jpeg.lib(DLLインポートライブラリ/libjpeg API)
- jpeg-static.lib(スタティックライブラリ/libjpeg API)
- turbojpeg.lib(DLLインポートライブラリ/libjpeg API+TurboJPEG API)
- turbojpeg-static.lib(スタティックライブラリ/libjpeg API+TurboJPEG API)
現行のOpenCVではTurboJPEG APIを使用していないため,前述の手順ではjpeg-static.lib
を使用しています.
TurboJPEG APIについては以下のURLを参照下さい.
- http://www.libjpeg-turbo.org/About/TurboJPEG
- https://cdn.rawgit.com/libjpeg-turbo/libjpeg-turbo/1.4.x/doc/html/group___turbo_j_p_e_g.html
筆者はOpenCV 3.0.0で動作確認しました.