OpenCV中Delaunay三角网算法例子
#include <opencv2/opencv.hpp>
#include <vector> using namespace cv;
using namespace std; typedef struct _TRIANGLE_DESC_
{
Point pt1, pt2, pt3;
_TRIANGLE_DESC_(const Point _pt1, const Point _pt2, const Point _pt3):
pt1(_pt1), pt2(_pt2), pt3(_pt3){}
}TRIANGLE_DESC; vector<TRIANGLE_DESC> delaunayAlgorithm(const Rect boundRc,const vector<Point>& points)
{
if (points.empty())
{
return vector<TRIANGLE_DESC>();
}
vector<TRIANGLE_DESC> result; vector<Vec6f> _temp_result;
Subdiv2D subdiv2d(boundRc);
for (const auto point : points)
{
subdiv2d.insert(Point2f((float)point.x, (float)point.y));
}
subdiv2d.getTriangleList(_temp_result); for (const auto _tmp_vec : _temp_result)
{
Point pt1((int)_tmp_vec[0], (int)_tmp_vec[1]);
Point pt2((int)_tmp_vec[2], (int)_tmp_vec[3]);
Point pt3((int)_tmp_vec[4], (int)_tmp_vec[5]);
result.push_back(TRIANGLE_DESC(pt1, pt2, pt3));
}
return result;
} int main(int argc, char* argv[])
{
const int width = 400;
const int height = 400;
Mat srcImg(height, width, CV_8UC3, Scalar(255,255,255));
const vector<Point> testPoints = {
Point(23, 45), Point(243, 145), Point(308, 25),
Point(180, 230), Point(343, 145), Point(108, 25)
};
for (const auto point : testPoints)
{
circle(srcImg, point, 1, Scalar(0), 2);
} //
const Rect pageRc(0, 0, width, height);
const auto triangles = delaunayAlgorithm(pageRc,testPoints);
for (const auto triangle : triangles)
{
line(srcImg, triangle.pt1, triangle.pt2, Scalar(255, 0, 0));
line(srcImg, triangle.pt1, triangle.pt3, Scalar(255, 0, 0));
line(srcImg, triangle.pt2, triangle.pt3, Scalar(255, 0, 0));
}
imshow("src", srcImg);
waitKey(0); return 0;
}
OpenCV中Delaunay三角网算法例子的更多相关文章
- OpenCV学习(22) opencv中使用kmeans算法
		
kmeans算法的原理参考:http://www.cnblogs.com/mikewolf2002/p/3368118.html 下面学习一下opencv中kmeans函数的使用. 首先我们 ...
 - OpenCV中的SURF算法介绍
		
SURF:speed up robust feature,翻译为快速鲁棒特征.首先就其中涉及到的特征点和描述符做一些简单的介绍: 特征点和描述符 特征点分为两类:狭义特征点和广义特征点.狭义特征点的位 ...
 - OpenCV学习(35) OpenCV中的PCA算法
		
PCA算法的基本原理可以参考:http://www.cnblogs.com/mikewolf2002/p/3429711.html 对一副宽p.高q的二维灰度图,要完整表示该图像,需要m = ...
 - openCV中直方图均衡化算法的理解
		
直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更 ...
 - Opencv中K均值算法(K-Means)及其在图像分割中的应用
		
K均值(K-Means)算法是一种无监督的聚类学习算法,他尝试找到样本数据的自然类别,分类是K由用户自己定义,K均值在不需要任何其他先验知识的情况下,依据算法的迭代规则,把样本划分为K类.K均值是最常 ...
 - c++opencv中线条细化算法
		
要达到的效果就是将线条尽量细化成单像素,按照论文上的Hilditch算法试了一下,发现效果不好,于是自己尝试着写了一下细化的算法,基本原理就是从上下左右四个方向向内收缩. 1.先是根据图片中的原则确定 ...
 - 图像处理之 opencv 学习---opencv 中的常用算法
		
http://blog.csdn.net/lindazhou2005/article/details/1534234 文中有提到鲁棒性 http://blog.csdn.net/chary8088/a ...
 - OpenCV中Camshitf算法学习
		
今天上午,结合OpenCV自带的camshitf例程,简单的对camshitf有了一个大致的认识和理解,现总结如下: 1:关于HSV H指hue(色相).S指saturation(饱和度).V指val ...
 - opencv3中的机器学习算法之:EM算法
		
不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...
 
随机推荐
- Vigenère 密码NOIP 2012 提高组 第一天 第一题
			
题目描述 16 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法――Vigenère 密 码.Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南 ...
 - spark新能优化之序列化
			
概叙: 在任何分布式系统中,序列化都是扮演着一个重要的角色的.如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多.所以,进行Spark ...
 - phpmyadmin使用中碰到的一些问题
			
在导入数据库文件的时候出现 #1062 – Duplicate entry '1′ for key ‘PRIMARY' 说明在上一次的导入中没有完全导入,但是主键是自增的,所以要输入主键才能继续,解决 ...
 - 作业:用HTML制作邮箱登陆界面
			
<body leftmargin="200" rightmargin="200"> <font size="45" > ...
 - poj1502 最短路
			
题意:有n个处理器,给出n*n的邻接矩阵的一半,表示相互之间传输信息的花费(另一半与给出的一半对称,即双向都可传输),x表示不能传输,问从第一个处理器传输到所有处理器的最小花费总和是多少. 就是跑一遍 ...
 - Git入门指南十一:Git branch 分支与合并分支
			
十五. Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master ...
 - springVS javaee
			
https://stackoverflow.com/questions/4490682/difference-between-java-ee-and-spring-framework https:// ...
 - dir:一行代码,提取出所有视频文件名称及路径
			
某次,部门接到一个任务,要求对公司现有的视频文件资料做一个统计整理分类的工作. 领导召集开会,问:两周时间够用吗? 统计整理分类工作的第一步骤是把视频文件名称来源类别信息录入到 excel 表格中,才 ...
 - c++中的dictionary对象:map的使用备忘
			
#include <map> #include <iostream> using namespace std; void main(){ map <string, int ...
 - sql字符串插入函数STUFF
			
STUFF (Transact-SQL) SQL Server 2012 其他版本 此主题尚未评级 - 评价此主题 <?XML:NAMESPACE PREFIX = "[default ...