輪郭の固定点(マス中心(mc(i))から輪郭の点までの距離をcoloumn [i]に持つ行列を作成します[私]。輪郭から点までの距離を求めるopencv C++
これは私が輪郭と質量の中心を見つけるコードです:
findContours(binMat, contours, cv::RETR_EXTERNAL, CHAIN_APPROX_SIMPLE,Point(0,0));
/// Get the moments
vector<Moments> mu(contours.size());
for (int i = 0; i < contours.size(); i++)
{
mu[i] = moments(contours[i], false);
}
/// Get the mass centers
vector<Point2f> mc(contours.size());
for (int i = 0; i < contours.size(); i++)
{
mc[i] = Point2d(mu[i].m10/mu[i].m00, mu[i].m01/mu[i].m00);
}
このコードがうまく機能しています。
次に、私は距離を見つけるために多くの方法を試しましたが、私はC++で新しいプログラミングを行いOpenCVを使用しているので多くの問題があります。
ありがとう、イブラヒム!!あなたのアドバイスは役に立ちました。私はこのように問題を解決しました: 'ベクトル mc(contours.size()); \t raggio.resize(contours.size()); \t { \t \t MC [I] =たPoint2D(MU [I] .m10/MU [I] .m00、ミュー[I](; iが(contours.sizeを<)I ++は、I = 0の整数)ため \t .m01/mu [i] .m00); \t \t KeyPoint center; \t \t center.pt = mc [i]; \t \t raggio [i] .resize(contours [i] .size()); (; J <輪郭[I] .size(); INT J = 0 J ++)用 \t \t \t \t { \t \t \tキーポイントK。 \t \t \t k.pt = contours [i] [j]; \t \t \t float d =距離((int)center.pt.x、(int)center.pt.y、(int)k.pt.x、(int)k.pt.y); raggio [i] [j] = d;\t \t \t \t \t} \t} –