9
このコードのおかげで、私はopenCvでdelaunay三角測量を行いました: example code (partiluclar draw_subdiv内)。 しかし、私が三角測量を表示したいとき、私は三角測量に属さないメッシュと線を取得します。この線は三角測量アルゴリズムが "無限"で掲示された三角形を考慮して仕事を開始することによるものです。Delaunay三角測量opencv C++
メッシュだけを凸包に描画する方法を教えてください(この行は除きます)?
表示機能:
void draw_subdiv(Mat &img, Subdiv2D& subdiv, Scalar delaunay_color)
{
vector<Vec6f> triangleList;
subdiv.getTriangleList(triangleList);
vector<Point> pt(3);
for(size_t i = 0; i < triangleList.size(); ++i)
{
Vec6f t = triangleList[i];
pt[0] = Point(cvRound(t[0]), cvRound(t[1]));
pt[1] = Point(cvRound(t[2]), cvRound(t[3]));
pt[2] = Point(cvRound(t[4]), cvRound(t[5]));
line(img, pt[0], pt[1], delaunay_color, 1);
line(img, pt[1], pt[2], delaunay_color, 1);
line(img, pt[2], pt[0], delaunay_color, 1);
}
}
主な機能:
Mat image = imread(argv[1], 1);
..... ....
//creat delaunay
Scalar delaunay_color(255, 255, 255), point_color(0,0,255);
Rect rect(0,0,image.cols, image.rows);
Subdiv2D subdiv(rect);
for(int i = 0; i < point.getDim(); ++i)
{
Point2f fp(point.getCoord()[i].real(), point.getCoord()[i].imag());
subdiv.insert(fp);
}
draw_subdiv(image, subdiv, delaunay_color);
imwrite("data/delaunay.jpg", image);
結果:
plsは、あなたの表示機能を投稿してください。 – Solkar