ワークフローまたは最終目標に応じて、次のことが役立つ場合があります。
を使用cvFillPoly
してポリゴンのバイナリマスクを作成し、を使用cvCopy
して、白く塗りつぶされた配列に作成されたマスクを使用して画像のコピーを作成します。したがって、黒いピクセルはポリゴンにあったピクセルのみです。
または、を使用する代わりに、レイキャスティングアルゴリズムpointPolygonTest
を使用して、交差の数が奇数の場合にのみピクセルが黒であるかどうかを確認できます。
レイキャスティングアルゴリズムを自分で実行すると、pointPolygonTestを呼び出すよりも多くの時間を節約できます。
ポイントが存在するスキャンラインに、ライン全体を占めるポリゴンが含まれている場合があります。
レイキャスティングアルゴリズムは、テスト対象のポイントに到達するまで、片側からポリゴンラインの交差をカウントします。m個の線分がある場合は、m個の線分光線の交差を実行し、それらを並べ替えて、発生した数をカウントします。
pointPolygonTestを使用する場合は、すべてのポイントに対してこれを実行する必要がありますが、このライン上のnポイントに対してテストするすべての光線は、すべてラインと交差し、ラインセグメントとの交差はすべて同じ場所で発生するため、アルゴリズムを自分で作成し、交差の数が奇数の場合に黒いピクセルをチェックするようにアルゴリズムを拡張することで、この再計算をすべて節約できます。