4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お願い、消えないでbundle版OpenEXR!ここを耐え抜けばexr形式サポートはできるんだから!

Last updated at Posted at 2025-12-23

次回、OpenEXR v2 死す!

OpenEXRレポジトリでのv2シリーズの事実上更新終了OpenCV communityでのサポート負担増大に伴い、3rdpartyレポジトリでの本サポートはここで打ち切りとなりそうです。

これまで長らくのご愛顧ありがとうございました。

.
.

.

.

…というわけで、みなさんこんにちは。今日はbundle版OpenEXRを廃止してsystem-installed版に一本化しようという話です!

■TL;DR

  • OpenEXR v2はもうdeprecatedなので使うのやめましょ。OpenCV bundleでも。
  • OpenEXR v3は簡単にbuildできる!OpenCV v4からでも使える!
  • さあ、system-installed OpenEXR v3に移行しよう!!

■bundle版OpenEXRがもはや古漬け

▢そもそもexr形式とは何ぞや?

まず、OpenEXRとは何か、というあたりの確認ですね。

OpenEXR(オープンイーエックスアール)はハイダイナミックレンジイメージ(High-Dynamic-Range Image, HDRI)のための画像ファイルフォーマットで、インダストリアル・ライト&マジック(ILM)によって作成されたソフトウェアツールの集合とともに、オープン標準としてリリースされた。

特徴としては、浮動小数点でしかもmulti channelな画像データを保存するところにあります! https://en.wikipedia.org/wiki/OpenEXR#Color_depth

  • 16-bit floating-point(half)
  • 32-bit floating-point
  • 32-bit unsigned integer

とはいえ、2025年現在、他の画像形式でもこの色深度をサポートしていたりしますので、是非このフォーマットで流通したいという話よりかは、昔のデータを使いたいというモチベーションの方が現実的かもしれません。

そんな素敵な画像形式だったら、残せばいいじゃない、って思いましたよね?残念ながら、年月には勝てなかったのです。

▢bundleされているv2.3.0には脆弱性がいっぱい & v2.5.10以後も更新停止

えーっとリストアップしてもつらいでの詳細はココみてもらう、として・・・

v2.3.0に影響がある脆弱性は全部で 22個 ですね。

そもそも、OpenEXRチームも「v1は論外、v2も非推奨!」っていってますよ!!だったら、OpenCVのbundle版だって非推奨ってことになりますよね!!

Beware that some distributions are out of date and only provide distributions of outdated releases OpenEXR. We recommend against using OpenEXR v2, and we strongly recommend against using OpenEXR v1.

▢bundle版をv3へのbump upも大変

OK, そうしたら次に考えるべきは、OpenCVにbundleしているopenexrをv3系列にアップデートできるかどうかだ…

だけど、これはメンテナーから明確にノーと言われている。簡単にいうと、ライブラリの開発規模が大きくなりすぎてbundleするのは相当難しいというお話。

OpenEXR becomes a large third party library.
We are going to drop it from 3rdparty source directory (still no roadmap yet).

Consider building OpenEXR separately and use it in OpenCV like any other generic external library. OpenEXR 3.0+ is supported through find_package(OpenEXR), older version through include/libs directories.

打つ手がなくなってきた。OpenCVでexr形式サポートをもう諦める(サレンダー)すべきなのか… 絶望が……

■ここで罠カード「system-installed OpenEXR!」発動!

安西先生は仰られました、「諦めたら、そこで試合終了ですよ」と。
まだだ、まだやれる!!!まだやれるんだ!!
ありがとう安西先生!!!

▢ OpenEXR v3は簡単にインストールできる

実は、OpenEXR v3からはcmakeでのbuildがサポートされてて、ちょー簡単にbuildできるのですよ。

git clone https://github.com/AcademySoftwareFoundation/openexr.git
cmake -S openexr -B buildOpenEXR -GNinja
cmake --build buildOpenEXR
sudo cmake --install buildOpenEXR

そしてOpenCVはOpenEXR v2もv3もサポートしている!!!つまりこれで勝利なのです!!OpenEXR v3.4.4 いけますよ!!

  Media I/O:
    ZLib:                        /usr/lib/x86_64-linux-gnu/libz.so (ver 1.3)
    JPEG:                        /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
    WEBP:                        /usr/lib/x86_64-linux-gnu/libwebp.so (ver decoder: 0x0209, encoder: 0x020f, demux: 0x0107)
    AVIF:                        avif (ver 1.3.0)
    PNG:                         /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.43)
    TIFF:                        /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.5.1)
    JPEG 2000:                   OpenJPEG (ver 2.5.0)
    OpenEXR:                     OpenEXR::OpenEXR (ver 3.4.4) 🌟ここ!!
    GIF:                         YES
    HDR:                         YES
    SUNRASTER:                   YES
    PXM:                         YES
    PFM:                         YES

▢ 現状OpenCV v4での制限事項

最後に落とし穴についてメモを残しておく。

  • OPENCV_IO_ENABLE_OPENEXR OpenEXRを使うかどうかの環境変数
  • -DOPENCV_IMGCODECS_ENABLE_OPENEXR_TESTS=ON EXRに関するテストを含むかどうかのconfiguration。設定しないと、opencv_test_imgcodecsからEXR関係のテストが除外される。

■ということで私は・・・

OpenCV communityにボールをぶん投げました。

  • OpenCV v4.13.0では、OpenEXR v2のbundle辞めるっていおうよ
  • OpenCV v4.14では、もうはずしちゃお!!

■まとめ

  • OpenEXR v2はもうdeprecatedなので使うのやめましょ。OpenCV bundleでも。
  • OpenEXR v3は簡単にbuildできる!OpenCV v4からでも使える!
  • さあ、system-installed OpenEXR v3に移行しよう!!

以上です、ありがとうございました!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?