Top > OpenCV > Method to enable OpenEXR on OpenCV

OpenCV/Method to enable OpenEXR on OpenCV

概要

OpenCV(Windows)でOpenEXRの画像読み書きを有効にする方法を紹介する.

下記のバージョンで確認を行った.

  • Windows Vista 32bit
  • OpenCV SVN rev6330(未確認ですがOpenCV 2.3.0では動作しないと思われます)
  • Visual Studio 2010 pro

必要なファイル

OpenEXR

  1. OpenEXR公式サイトから下記のファイルをダウンロードする.
    • ilmbase-1.0.2.tar.gz
    • openexr-1.7.0.tar.gz

zlib

  1. zlib公式サイトから下記のファイルをダウンロードする.
    • zlib125.zip

サンプル画像

  1. OpenEXR公式サイトから下記のファイルをダウンロードする.
    • openexr-images-1.7.0.tar.gz

ファイル配置

前述のファイルを展開して,下記のように配置する.
DeployディレクトリはOpenEXRのDLL,ライブラリ,ヘッダがコピー,生成されるディレクトリである.


openexr.png


OpenEXRのビルド

Ilmbaseのビルド

  1. ilmbase-1.0.2.tar.gzを展開し,Visual Studioで下記のファイルを開く.
    ilmbase-1.0.2.tar\ilmbase-1.0.2\vc\vc8\IlmBase.sln
  2. 下記の設定でソリューションをビルド.ビルド完了後,Deployディレクトリが生成される.
    ソリューション構成Release
    ソリューションプラットフォームWin32

zlibのビルド

  1. zlib125.zipを展開する.
  2. Visual Studio 2010コマンドプロンプトでzlib-1.2.5\contrib\masmx86に移動して下記コマンドを実行する.
    bld_ml32.bat
  3. Visual Studioで下記のファイルを開く.
    zlib-1.2.5\contrib\vstudio\vc10\zlibvc.sln
  4. zlibvcプロジェクトを下記の構成でビルドする.
    ソリューション構成Release
    ソリューションプラットフォームWin32
  5. zlib-1.2.5\contrib\vstudio\vc10\x86\ZlibDllReleaseにDLL,ライブラリが生成される.
  6. 下記DLLをDeploy\bin\Win32\Releaseにコピー.
    zlibwapi.dll
  7. 下記ライブラリをDeploy\lib\Win32\Releaseにコピー.
    zlibwapi.lib
    zlibwapi.map
  8. zlib-1.2.5にある下記ヘッダファイルをDeploy\includeにコピー.
    zlib.h
    zconf.h

IlmImfのビルド

  1. openexr-1.7.0.tar.gzを展開し,Visual Studioで下記のファイルを開く.
    openexr-1.7.0\vc\vc8\OpenEXR\OpenEXR.sln
  2. IlmImfプロジェクトを下記の構成でビルドする.
    ソリューション構成Release
    ソリューションプラットフォームWin32

OpenCVのビルド

  1. CMakeでWITH_OPENEXRをONにする
  2. Deployディレクトリ中のOpenEXRのインクルードパスとライブラリを指定する
  3. OpenCV.slnのopencv_highguiプロジェクトがリンクするライブラリとして下記ファイルを追加する
    IlmThread.lib
  4. OpenCV.slnのopencv_highguiプロジェクトのプリプロセッサ定義に下記の値を追加する
    OPENEXR_DLL
  5. OpenCVを下記の構成でビルドする.
    ソリューション構成Release
    ソリューションプラットフォームWin32

サンプルプログラム

ダウンロードしておいた下記ファイル(サンプル画像)を展開する.

  • openexr-images-1.7.0.tar.gz

下記にファイル読み込みのサンプルプログラムを記載する.

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc, char *argv[])
{
  cv::Mat src_img = cv::imread("PrismsLenses.exr", 1);
  cv::namedWindow("src", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
  cv::imshow("src", src_img);
  cv::waitKey(0);

  return 0;
 }

Contact

間違い・御指摘等ありましたら,

mail.png

までメールにてご連絡ください.


リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Mon, 15 Aug 2011 20:16:51 JST (2081d)