转载:approxPolyDP函数
本文转载http://blog.csdn.net/qq_18343569/article/details/47999257
1、approxPolyDP函数
函数的作用:
对图像轮廓点进行多边形拟合
2、函数的调用形式
C++: void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)
参数详解;
InputArray curve:一般是由图像的轮廓点组成的点集
OutputArray approxCurve:表示输出的多边形点集
double epsilon:主要表示输出的精度,就是另个轮廓点之间最大距离数,5,6,7,,8,,,,,
bool closed:表示输出的多边形是否封闭
3、OPENCV代码
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h> using namespace cv;
using namespace std; Mat src; Mat src_gray;
int thresh = ;
int max_thresh = ;
RNG rng(); /// Function header
void thresh_callback(int, void*); /** @function main */
int main(int argc, char** argv)
{
/// 加载源图像
src = imread("D:6.jpg", ); /// 转成灰度图并进行模糊降噪
cvtColor(src, src_gray, CV_BGR2GRAY);
blur(src_gray, src_gray, Size(, )); /// 创建窗体
char* source_window = "Source";
namedWindow(source_window, CV_WINDOW_AUTOSIZE);
imshow(source_window, src); createTrackbar(" Threshold:", "Source", &thresh, max_thresh, thresh_callback);
thresh_callback(, ); waitKey();
return();
} /** @function thresh_callback */
void thresh_callback(int, void*)
{
Mat src_copy = src.clone();
Mat threshold_output;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy; /// 对图像进行二值化
threshold(src_gray, threshold_output, thresh, , THRESH_BINARY); /// 寻找轮廓
findContours(threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(, ));
/*Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);*/ /* 对每个轮廓计算其凸包*/
vector<vector<Point> >poly(contours.size());
for (int i = ; i < contours.size(); i++)
{
approxPolyDP(Mat(contours[i]), poly[i], ,true);
} /* 绘出轮廓及其凸包*/
Mat drawing = Mat::zeros(threshold_output.size(), CV_8UC3);
for (int i = ; i< contours.size(); i++)
{
Scalar color = Scalar(rng.uniform(, ), rng.uniform(, ), rng.uniform(, ));
drawContours(drawing, contours, i, color, , , vector<Vec4i>(), , Point());
drawContours(drawing, poly, i, color, , , vector<Vec4i>(), , Point());
}
/*vector<Point> poly;
approxPolyDP(Mat(contours[3]), poly, 5, false);
vector<Point>::const_iterator itp = poly.begin();
while (itp != (poly.end() - 2))
{
line(drawing, *itp, *(itp + 1), Scalar(255), 2);
++itp;
}
line(drawing, *itp, *(poly.begin()), Scalar(255), 2);*/
/// 把结果显示在窗体
namedWindow("Hull demo", CV_WINDOW_AUTOSIZE);
imshow("Hull demo", drawing);
}
转载:approxPolyDP函数的更多相关文章
- [转载]findContours函数参数说明及相关函数
原文地址:findContours函数参数说明及相关函数作者:鸳都学童 findContours函数,这个函数的原型为: void findContours(InputOutputArray imag ...
- (转载)函数:mysqli_query和mysql_query有何区别?
(转载)http://wzan315.blog.163.com/blog/static/37192636201241732045299/ Mysqli.dll是一个允许以对象的方式或者过程操作数据库的 ...
- 转载------------C函数之memcpy()函数用法
转载于http://blog.csdn.net/tigerjibo/article/details/6841531 函数原型 void *memcpy(void*dest, const void *s ...
- 转载 js函数声明和函数表达式
在js中函数有两种表达方式.1 函数声明 2 函数表达式 函数声明 function sayname(){ alert("li lei"); } 函数表达式 var sayname ...
- [转载] poll()函数
原地址:http://baike.baidu.com/view/2997591.htm poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函 ...
- 转载 --mysql函数大全
控制流函数 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境 ...
- [转载]oracle函数listagg的使用说明
工作中经常遇到很多需求是这样的,根据条件汇总某些字段,比如我遇到的是,我们公司有三个投资平台,同一个客户拿手机号在三个平台都注册了,但注册过的用户名不一样,显示的时候需要根据手机号显示所有注册过的名称 ...
- [转载]decode()函数简介
今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网查了一下,还挺好用的一个函数,写下来希望对朋友们有帮助哈! decode()函数简介: 主要作用:将查询结果翻译成其他值(即 ...
- [转载]strtok函数和strtok_r函数
1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct person{ char name[25]; char sex[1 ...
随机推荐
- ALGO-149_蓝桥杯_算法训练_5-2求指数
AC代码: #include <stdio.h> int main(void) { int n,m,sum; int i,j; scanf("%d %d",&n ...
- ALGO-152_蓝桥杯_算法训练_8-2求完数
记: 掌握完数的概念 AC代码: #include <stdio.h> int main(void) { int i,j,sum; ; i <= ; i ++) { sum = ; ...
- extend 与 append 的区别
>>> A = ['q', 'w', 'e', 'r'] >>> A.extend(['t', 'y']) >>> A ['q', 'w', 'e ...
- [转].NET Framework、C#、CLR和Visual Studo之间的版本关系
原文地址:http://www.xcode.me/more/microsoft-net-framework-version-define C#版本 .NET Framework版本 CLR版本 Vis ...
- PAT 乙级 1036 跟奥巴马一起编程(15) C++版
1036. 跟奥巴马一起编程(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 美国总统奥巴马不仅呼吁所有人 ...
- event.currentTarget指向事件所绑定的元素,而event.target始终指向事件发生时的元素
event.currentTarget指向事件所绑定的元素,而event.target始终指向事件发生时的元素
- Linux配置IP,安装yum源
ip addr 查看IP地址 通过 ip 命令加参数 addr 则是查看当前网卡的配置信息, 从下图中可以看出, 当前系统的 ens33 网卡并没有 ipv4 及 ipv6, 没有 ip地址 则只能说 ...
- 模拟实现ATM与购物商城
一.功能介绍(第6条未实现)模拟实现一个ATM + 购物商城程序1额度15000或自定义2实现购物商城,买东西加入购物车,调用信用卡接口结账3可以提现,手续费5%4支持多账户登录5支持账户间转账6记录 ...
- [UE4]自定义函数,快速增加输入参数的一种方法
- 第9课 基于范围的for循环
1. 基于范围的for循环(range-based for) (1)语法:for(decl : coll){//statement} ①decl用于声明元素及类型,如int elem或auto ele ...