OpenCVというライブラリを使うと複雑な画像処理プログラムをかなり簡単に書くことができる。というか実際にほとんど一日勉強しただけのようなレベルのぼくでも、結構難しそうな問題を解けるプログラムを書けたので、ちょっとここで紹介してみたい。 やりたかったことは、上のようなイメージからホールを検出すること。紙に穴が空いているのだが、これが何個どの位置にあるのかを検出したい。穴の輪郭は若干ギザギザしているし、互いに重なっていることもあるので、素直な円検出アルゴリズムはうまく動かない。自動でやるにはちょっと難しそうな問題でしょう? これがOpenCVを使うと数十行のプログラムで解くことができる。 解き方としては、穴が検出しやすくなるように画像をステップバイステップで単純化しながら、パターンマッチで穴を検出すればいいようだ。そういうやりかただと次のような流れになる。 まずは画像をガウシアンフィルタに通