私は2D点のベクトルを得ました。これらの点によって形成されたすべての等高線を見つける必要があります。残念ながら、cv::findContours
はポイントの配列を扱うことができません。バイナリイメージが必要です。OpenCV findContours of points vector
ポイントの輪郭を得るための回避策はありますか?多分ポイントを使ってバイナリイメージを形成し、次にこのイメージをcv::findContours
で使用することは可能ですか? こちらからご連絡ください。
私は2D点のベクトルを得ました。これらの点によって形成されたすべての等高線を見つける必要があります。残念ながら、cv::findContours
はポイントの配列を扱うことができません。バイナリイメージが必要です。OpenCV findContours of points vector
ポイントの輪郭を得るための回避策はありますか?多分ポイントを使ってバイナリイメージを形成し、次にこのイメージをcv::findContours
で使用することは可能ですか? こちらからご連絡ください。
あなたは画像の大きさがわかっている場合は、ゼロのバイナリイメージを作成し、その後、品種を使用する:: findContoursバイナリイメージ内のすべての輪郭を見つけるために、値255ですべての2Dのポイントを埋めることができます。コードスニペット後
はあなたを助けることがあります。
// If pts is your array of float points and r,c are number of rows and columns of image
//calculate total number of points in array
int n = sizeof(pts)/sizeof(*pts);
//if points are stored in vector, then use n = pts.size()
//create binary image
cv::Mat image = cv::Mat::zeros(Size(c, r), CV_8UC1);
//fill all the points with value 255
for (int i = 0; i < n; i++) {
image.at<uchar>(p[i]) = 255;
}
//find all contours in binary image and save in contours variale
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(image, contours, hierarchy, RETR_LIST, CHAIN_APPROX_NONE);
私は画像サイズを知っています。解決策の詳細を記述してください。私は浮動小数点の座標を持っているので、すべての2D浮動小数点をどのように埋めるのか分かりません – rudolfninja
私は自分の答えを編集し、コードスニペットを追加しました。それはあなたを助けるかもしれません。 – Jazz
xとyを反転するか、直接p [i]を使用して画像にアクセスします – Miki
あなたは凸包を探していますされていますか? http://opencvexamples.blogspot.com/2013/10/convex-hull.htmlを参照してください。 – kebs
あなたのリンクから理解しているように、convexHullはすべての輪郭を返しませんが、そのうちの1つだけです – rudolfninja