私の問題は、輪郭にアクセスする方法がわからないことですvector <vector <Point>>
(これはOpenCVのマトリックスのような2Dです)
これをやりたいです。マット要素が輪郭領域で構成されていない場合、そのマトリックス要素を抑制したいと思います。これを行うには、輪郭要素も知る必要があります。
最初と 2 番目のベクトルの両方に for ループが必要です。このようなもの:
vector< vector<Point> > contours;
for(int i= 0; i < contours.size(); i++)
{
for(int j= 0; j < contours[i].size();j++) // run until j < contours[i].size();
{
cout << contours[i][j] << endl; //do whatever
}
}
私の状況が非常に緊急である場合、私は自分の質問をもっと慎重にします.
あなたの質問を理解しようとすると、基本的にピクセルレベルで輪郭を考えたいと思うでしょう。これを行うには、drawContour を使用して空の行列に輪郭を描画する必要があります。次に、2 つのマトリックスを比較するか、ピクセルごとに必要な場合はそのマトリックス内のピクセルを一致させます。
エッジ ポイントだけでなくすべてのポイントが必要な場合は、 を使用drawContours(....,thickness=CV_FILLED)
してこの輪郭をダミー マットにダンプし、ダミー マットをスキャンしてそれらのポイントを取得できます。