Skimming OpenCV
opencv/opencv: Open Source Computer Vision Library
どんなコードか軽く冷やかしてみるが・・・つらい・・・。C++ で画像周りのコードをどう書くと綺麗に書けるか、という題材には向いていない。C++ は実装のための言語であって Python とか Java の binding とかが重要なのかもしれないね。
機能はいっぱいあるし特殊な CPU 命令や GPU を使った高速化とかもがんばっているぽいので、誰かが実装したアルゴリズムを呼び出すだけならさすがに良さそう。こいつをフレームワークとして自分でアルゴリズムを書くという乗り物には向いてないというだけで。
この言い分もフェアではないかな。たとえば Computational Photography のアルゴリズムを実装したコードも入っており、中を見るとまあこんなもんかな、と思えてくる。単にかっこいい C++ ではないというだけで、OpenCV の流儀を覚えればそれなりに便利なのかもしれない。
それはもはや OpenCV を参考に画像処理コードのデザインを考えるという話じゃなく OpenCV にコミットして良きも悪き受け入れるということなわけだが、そうやってる人が多いところを見ると割には合うもんなのかもね。
まあ今回はスルーするとして、やる気になったら考えよう。OpenCV 4.0 には G-API という、Halide/TF/NNAPI 的グラフでがんばるモデルもあるらしい。こういうのは学ぶ価値ありなのかもしらん。