■TL;DR
- OpenCV2/3は、基本的に早く捨てましょう(極論)
- ディストリビューター版パッケージにも、安定動作というメリットはある
- OpenCVのissue報告するときは、最新ソースをbuildして試してみてね
■はじめに
これまで長い時間をかけてOpenCVは進化し続けてきた。その過程として、OpenCV 1.0があり、OpenCV 2.0があり、OpenCV 3.0があった。感謝しかない。
だがしかし、それとは別の問題だ。2025年12月現在、未だにOpenCV2/3に依存している環境が存在している。わるいごはいねがー!!!!👹
■ OpenCV 2/3を置き去りにするべき3つの理由
▢ C言語APIはもう見捨てられました。
OpenCV 1で生まれ、OpenCV 2で育ったが、OpenCV 3でC++ APIに推され、OpenCV 4ではもう廃止の方向です!!
未だにCvMatやIplImageを使っている悪い子は、いねがー👹
▢ C++11/14/17/20への適用
今、2025年なわけじゃないですか。2025年。
OpenCV4の制限である「C++11」ですら既に骨董品扱いなわけですよ。それでも過去互換性のためには致し方が無い。これはまあいいものとしましょう。
でも、それもサポートしていないコンパイラのために古いOpenCVを延々と使い続ける?
………組み込み屋さんとしてはわかるので、まあしょうがないか。と言いたいけど……
▢腐ってやがる。(OpenCV2/3は)遅すぎたんだ
現実を直視しよう。これが各ディストリビューションで使われている標準的なパッケージ管理ソフト上の、OpenCVだ!!! ありがとう、repologyさん!!https://repology.org/
OpenCV 4.12.0 は、2025/7/2にリリースされている。だが、早4か月経過している。だが、なかなか最新版に追従できていない現実がある。
だけどね・・・ Ubuntuで、未だにOpenCV 2使っているのは"16.04”レベルの骨董品、OpenCV 3を使っていても"18.04"の骨董品なわけですよ!!平成レトロ決めないで、ちゃちゃっと行きましょう!
Cent OS6 の 2.0.0は正座ものかしらね・・・
■ ディストリビューター版パッケージにもメリット・デメリットがある
ただ間違えないで欲しい。ソースコードからbuildする選択肢以外が、全てダメ、という訳ではない。
▢ OpenCVにも脆弱性はある!
どんなソフトウェアにも脆弱性はある。問題はそれに対して適切にパッチを当てられているのかどうかである。
OpenCVに関してCVEとして公開されている脆弱性はこちら。 https://www.cve.org/CVERecord/SearchResults?query=OpenCV
現実問題、CVEとして公開されている脆弱性だけでなく、日々開発中に見つかった軽微な問題も直しているわけで、油断はならないと言える。
例えば、OUT-OF-BOUNDS(領域外アクセス)とか、解放したはずのメモリに後からアクセスとか・・・ そういう些細な問題もたまにあるのです!!人間だから仕方がない!
▢ ディストリビューター版パッケージには安定動作が期待できる!
ディストリビューター版パッケージの場合、そのバージョンがEOLになるまでは、セキュリティパッチが適切に当てられる可能性がある。それも、機能追加・変更の影響が最小化されるので、アプリケーション側としてもリスクは最小化される、というメリットはある。
例えば、OpenCV本家で最新コードツリー上で動くパッチを作ったら、なんとかかんとか古いバージョンであっても組み込んでくれることが期待できる。セキュリティ対策だけ入っていて、余計な修正(?)は入っていないため、安定稼働ができるという利用者にとってはハッピーな道筋になる。これに関しては感謝しかないです。
▢ OpenCV communityはディストリビューター版パッケージは見ないです💖
OpenCV communityは、大本のOpenCV repositoryの保守なんかはしますが、そのコードをベースに各linuxなんかのdistributorが作ったパッケージについては保守していないです。
「Ubuntu 25.10で、apt install したopencvが動かねえぞ、ゴラァ!!」とか殴りこまれても、「ほへーん、大変ですなー、がんばってくださいねー」ぐらいの気持ちで見ているのです。
ということで、OpenCVのissue報告するときは、最新ソースをbuildして試してみてね💖
あと、opencv-pythonのパッケージは、OpenCV communityで見ているので、こちらは情報が欲しいなあ…
■ まとめ
- OpenCV2/3は、基本的に早く捨てましょう(極論)
- ディストリビューター版パッケージにも、安定動作というメリットはある
- OpenCVのissue報告するときは、最新ソースをbuildして試してみてね
以上です、ありがとうございました!