三角剖分算法c语言,Delaunay三角剖分的OpenCV C ++(Delaunay triangulation op

本文介绍了一个使用OPENCV进行Delaunay三角剖分的例子,并探讨了如何仅绘制属于凸包的三角形网格,避免多余的边界线。

我与OPENCV由于这个码的Delaunay三角剖分: 例如代码 (在partiluclar draw_subdiv)。 然而,当我想要显示的三角,我得到的网格,谁不属于triangulation.This线线是由于三角测量算法开始自己的工作考虑张贴在“无限”的三角形的事实。

你能解释我如何绘制只网到凸包请(不含本线)?

显示功能:

void draw_subdiv(Mat &img, Subdiv2D& subdiv, Scalar delaunay_color)

{

vector triangleList;

subdiv.getTriangleList(triangleList);

vector 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);

结果:

6c1555302777729326ca3efa0910d9ec.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值