14章輪郭
Cannyエッジ検出器のようなアルゴリズムは、画像内で異なる部分を分離するエッジピクセルを見つけるために利用できますが、エッジ自体がどんな形かは何も教えてくれません。次のステップは、これらのエッジピクセルを組み合わせて輪郭にすることです。そろそろみなさんは、これを行ってくれる便利なOpenCVの関数があることを期待するようになっているでしょう。cv::findContours()
がそうです。本章では、この関数を使用するのに必要な内容から始めることにします。これらの概念を理解してから輪郭抽出の詳細に入りましょう。その後、計算した輪郭を用いて行える多くのことを説明していきます。
14.1 輪郭を見つける
輪郭とは、画像内の曲線を(何らかの形で)表す点のリストです。その表現形式は対象とする状況によって異なります。曲線を表現する方法もたくさんあります。OpenCVでは輪郭はSTLスタイルのテンプレートオブジェクトvector<>
で表され、その中のエントリーはすべて、その曲線上にある次の点の位置に関する情報を持ちます。2次元の点群(vector<cv::Point>
やvector<cv::Point2f>
)が最もよく使われる表現形式ですが、それ以外にも輪郭を表現する方法は存在します。そのような輪郭の1つの例がFreemanチェインです。このFreemanチェインでは、各点は前の点から指定方向への特定の「移動量」として表されます。このようなバリエーションについては出てきたときに詳しく説明します。差し当たって知っておくべき大事なことは、輪郭はほとんどの場合STL vectorで表されますが、必ずしもcv::Point
オブジェクトからなるいわゆるベクトルとは限らないということです。 ...
Get 詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.