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 ...
随机推荐
- Java强,软,弱,虚类型
链接 http://wiseideal.iteye.com/blog/1469295
- Crawler4j学习笔记
Crawler4j概述 crawler4j是一款基于Java的轻量级单机开源爬虫框架,最大的一个特点就是简单.另外也支持多线程.支持代理.可以过滤重复URL 基本上从加载jar到工程里面 通过修改示例 ...
- Codeforces Round #132 (Div. 2)
A. Bicycle Chain 统计\(\frac{b_j}{a_i}\)最大值以及个数. B. Olympic Medal \(\frac{m_{out}=\pi (r_1^2-r_2^2)hp_ ...
- HDU-1520 Anniversary party(树形DP)
题目大意:一棵树,每个节点都带权.从中取出一些节点,并且子节点不能与父节点同时取,求能取得的最大值. 题目分析:定义状态dp(u,0/1)表示u点不取/取.则状态转移方程为: dp(u,1)=sum( ...
- Xcode7.0.1(ios9)的部分适配问题
今天更新了Xcode 7 正式版,App编译出现很多警告,在App运行的时候出现如下的提示......... the resource could not be loaded because the ...
- JS原型链原理(链表)
任何一个对象都有一个prototype的属性,在js中可以把它记为:__proto__ 当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表..在数据结 ...
- sessionStorage和localStorage中 存储
转:http://my.oschina.net/crazymus/blog/371757 sessionStorage只在页面打开是起作用, localStorage关闭页面后仍然起作用. 有时候,我 ...
- android ant 多渠道批量打包
注:本文转载于:http://blog.csdn.net/zz7zz7zz/article/details/8915701 前言: 利用ant 可实现多渠道,批量打包. 正文: 思想:通过循环更改An ...
- 使用PHP的curl扩展实现跨域post请求,以及file_get_contents()百度短网址例子
<?php $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,"http://dwz.cn/create.php"); curl_se ...
- C# Regex.IsMatch (正则表达式验证:数字、小数点、邮件、计算表达式)
public bool isInt(string str) { //^([+-]?)表示加减号只能出现在字符串开头且只有一位 ///d*表示后面可以有多个或一个十进制数 //$表示字符串结尾 retu ...