寻找物体的凸包 opencv
凸包的含义:
  在二维平面上给定点集,凸包就是将最外层的点连接起来构成的凸多边形。并且这个凸多边形能包含点集中所有的点。
OPENCV中:
convexHull函数用于寻找图像点集中的凸包。它有六个输入参数。
第一个参数:输入的二维点集
第二个参数:输出的凸包。为数组类型的hull
第三个参数:bool类型的clockwise。当此标志符为真时,输出的凸包为顺时针方向,否则,为逆时针方向。
第四个参数:bool类型的returnPoints,操作标识符,默认值为true。
#include<opencv2/opencv.hpp>
#include<iostream> using namespace std;
using namespace cv; int main()
{
Mat image(, , CV_8UC3); //创建一个600*600 8位无符号字符型的3通道图像
RNG& rng = theRNG(); ////用其引用来接收theRNG函数返回的随机数生成器 while ()
{
char key; // 键值
int count = rng.uniform(3,103);//随机生成点的数量
vector<Point>points; //二维点集存在这个向量里面 for (int i = ; i < count; i++) //点的坐标
{
Point point;
point.x = rng.uniform(image.cols /, image.cols * / );
point.y = rng.uniform(image.rows / , image.cols * / );
points.push_back(point); //生成的点放进points这个向量里面
}
//检测凸包
vector<int> hull; //第二个参数声明
convexHull(Mat(points), hull, true); image = Scalar::all();//初始化图像为全黑色
//随机化点的颜色 并画出
for (int i = ; i < count; i++)
{
circle(image, points[i], , Scalar(rng.uniform(, ), rng.uniform(, ), rng.uniform(, )), FILLED, LINE_AA);
}
//准备参数
int hullcount = (int)hull.size();//凸包的边数
Point point0 = points[hull[hullcount - ]]; //连接凸包边的坐标点
//绘制凸包的边
for (int i = ; i < hullcount; i++)
{
Point point = points[hull[i]];
line(image, point0, point, Scalar(, , ), , LINE_AA);
point0 = point;
}
//显示效果图
imshow("凸包检测示例", image);
//按下ESC退出程序
key = (char)waitKey();
if (key == )
break;
} return ;
}
检测效果:




寻找物体的凸包 opencv的更多相关文章
- opencv 6 图像轮廓与图像分割修复 1 查找并绘制轮廓  寻找物体的凸包
		
查找并绘制轮廓 寻找轮廓(findContours)函数 绘制轮廓(drawContours()函数) 基础实例程序:轮廓查找 #include <opencv2/opencv.hpp> ...
 - OpenCV入门之寻找图像的凸包(convex hull)
		
介绍 凸包(Convex Hull)是一个计算几何(图形学)中的概念,它的严格的数学定义为:在一个向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包. 在图像处理过程中,我们 ...
 - Unity3d创建物体,寻找物体,加载物体,添加脚本
		
GetCreateObject: using UnityEngine; public class GetCreateObject : MonoBehaviour { GameObject emptyG ...
 - opencv —— convexHull 寻找并绘制凸包
		
凸包的定义: 包含点集 S 所有点的最小凸多边形称为凸包. 凸包绘制原理:Graham 扫描法 首先选择 y 方向上最低的点作为起始点 p0. 然后以 p0 为原点,建立极坐标系,做逆时针极坐标扫描, ...
 - 寻找最小矩形边框--OpenCv
		
好久没有写博客了 今天写一下比较常用的寻找矩形边框 ////////////////////////////寻找最矩形边框/////////////////////////////////////// ...
 - OpenCV编程入门目录
		
第一部分 快速上手OpenCV 第1 章 邂逅OpenCV 图像处理.计算机视觉与OpenCV OpenCV 概述 起源及发展 应用概述 .2OpenCV 基本架构分析 .3OpenCV3 带来了什么 ...
 - 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
		
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
 - OpenCV 学习笔记03 凸包convexHull、道格拉斯-普克算法Douglas-Peucker algorithm、approxPloyDP 函数
		
凸形状内部的任意两点的连线都应该在形状里面. 1 道格拉斯-普克算法 Douglas-Peucker algorithm 这个算法在其他文章中讲述的非常详细,此处就详细撰述. 下图是引用维基百科的.ε ...
 - opencv学习笔记(二)寻找轮廓
		
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
 
随机推荐
- vue学习第三天 ------ 临时笔记
			
说明:之前两天属于入门,文章可能存在片段信息 vue2.x+webpack快速搭建前端项目框架详解 http://www.jb51.net/article/129463.htmVue cli + We ...
 - Android - 开发页面需了解的dip,sp,px知识,以及它们的转换
			
工作中,时常会有任务要求开发新页面,这时一般的流程是产品经理确定要开发的页面和功能,然后设计师提供设计稿,之后由我们开发人员完成开发工作. 通常,设计师提供的设计稿尺寸标注会很详细,例如涉及到字时,字 ...
 - 【Microsoft Azure学习之旅】Azure Java SDK - Service Bus的认证问题
			
[2014年12月12日增加备注:12月10日,Microsoft Azure Java SDK team发布了v0.7.0版本,增加对Service Bus SAS的支持,已解决这个问题:-)] 最 ...
 - react-native —— 在Mac上搭建React Native Android开发环境
			
需要:JDK,Android SDK,Node.js 1.安装JDK 去Java官网下载列表选择Mac OS X x64版 2.安装Android SDK 虽然现在谷歌推荐使用Android ...
 - zookeeper的几种使用场景
			
1.数据的发布与订阅 通过发布与订阅实现配置的信息的统一管理,主要采用zk节点可以存储数据的特性,我们可以将一些配置信息存放到某一节点上,订阅这个节点的服务就可以动态的获取这个节点的数据.在应用启动的 ...
 - 炫酷的Html+css (一)
			
博客园在别的 博主看到一个样式, 里面有一段这样的 正方体旋转的 动态图 吸引了我. 找博主要了代码, 贴出来 与大家共享. 鼠标放上去会展开 一大一小两个正方体, 鼠标悬浮上去, 外面的正方体会展开 ...
 - centos7 mod_gearman 3.0.1 打包rpm
			
wget https://github.com/sni/mod_gearman/archive/v3.0.1.tar.gz -O /root/rpmbuild/SOURCES/mod_gearman- ...
 - IOS  GCD(线程的 串行、并发 基本使用)
			
什么是GCD 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自 ...
 - 软件的依赖关系:类图关系:is-a has-a use-a
			
基本描述: 类图关系:is-a has-a use-a: 依赖规则: 依赖倒置: 依赖注入: 接口隔离: 无环依赖: 稳定依赖: 依赖倒置描述: 底层抽象-->高层抽象 ^ ^ ...
 - C sharp #003# 面向对象编程基本构件
			
饮水思源:金老师的自学网站 索引 类的属性 简化字段/属性的初始化 命名空间 程序集 类的属性 字段+get/set方法=属性 (之前都是把字段和属性混着用..) 经典写法: using System ...