【OpenCV笔记 15-1】OpenCV寻找物体的凸包convexHull
来源:互联网 发布:公司网络管理软件 编辑:程序博客网 时间:2024/05/20 15:59
OpenCV寻找物体的凸包convexHull()
应用到的知识点:
1.寻找物体的凸包convexHull
2.定义和输出vector容器点坐标
3.随机数发生器
==================================
凸包检测示例程序:
//寻找物体的凸包convexHull//定义和输出vector容器点坐标#include <opencv2/opencv.hpp>#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <vector>using namespace std;using namespace cv;int main(int argc, char** argv){Mat testImage(600, 600, CV_8UC3);//画布大小600x600RNG& rng = theRNG();//按回车键一直更新while (1){//int count = (unsigned)rng % 100 + 8;//随机生成点的数量int count = rng.uniform(5, 20);//随机产生点的个数cout << "凸包包含 " << count << " 个点" << endl;cout << "各点坐标如下:" << endl;//输出产生随机点个数vector<Point>points;//vector容器存放点坐标for (int i = 0; i < count; i++){Point point;//点坐标随机产生point.x = rng.uniform(testImage.cols / 5, testImage.cols * 4 / 5); //横坐标x在范围(600/1,600*4/5)随机产生point.y = rng.uniform(testImage.rows / 4, testImage.rows * 3 / 4);//纵坐标y在范围(600/4,600*3/4)随机产生points.push_back(point);cout << "Point" << i + 1 << ": " << point << endl;//依次输出随机产生每个点的坐标}cout << "基于Mat的vector:\n" << Mat(points) << endl;//基于Mat类的vector将以矩阵形式输出坐标//检测凸包vector<int >hull;convexHull(Mat(points), hull, true);testImage = Scalar::all(0);//将画布设置为黑色for (int i = 0; i < count; i++)circle(testImage, points[i], 5, Scalar(255, 0, 255), -1, 4);//以随机点为圆心,画出半径为5的实心圆(标记作用)//参数准备int hullcout = (int)hull.size();//凸包的边数Point point0 = points[hull[hullcout - 1]];//连接凸包的坐标点//依次连接随机点,绘制凸包for (int i = 0; i < hullcout; i++){Point point = points[hull[i]];line(testImage, point0, point, Scalar(0, 255, 255), 1, 4);//连接线条颜色为黄色point0 = point;}//输出imshow("凸包绘制检测", testImage);char key;key = (char)waitKey();if (key == 27 || key == 'q' || key == 'Q')//按下ESC 或q 或 Q 退出break;}return 0;}
==================================
运行结果:
运行结果1
注意比较两种坐标的输出格式,一个是std::vector格式,另一种是基于Mat的vector格式(矩阵形式)。
============================================================
运行结果2
========================================================================================
运行结果3
0 0
- 【OpenCV笔记 15-1】OpenCV寻找物体的凸包convexHull
- OpenCV教程 之 寻找物体的轮廓与凸包:findContours、convexHull函数(C++)
- opencv学习(四十一)之寻找凸包convexHull()
- Opencv学习之寻找和绘制物体的凸包
- opencv开发笔记(十三):寻找和绘制物体的凸包
- 计算物体的凸包--convexHull()
- 计算物体的凸包(convexHull)
- OpenCV在图像中寻找轮廓和计算图像中物体的凸包
- 利用OpenCV的convexHull和convexityDefects做凸包(凸壳)检测及凸包(凸壳)的缺陷检测
- opencv寻找已知物体
- 【OpenCV笔记 15-2】OpenCV寻找物体最小包围矩形和最小包围圆
- opencv--convexHull()用法
- OpenCV Tutorial: 凸殼(convexHull)
- opencv中convexHull函数说明
- opencv之convexHull()用法
- 用OpenCV的函数convexHull做凸包(凸壳)检测
- OpenCV 2 学习笔记(19): 利用均值漂移(Meanshift)寻找物体
- opencv c++函数 imgproc模块 21 计算物体的凸包
- java Socket用法详解
- iFrame请求数据
- 版本更新下载
- 由浅入深理解Android中的回调机制(二)【实现简易购物车功能】
- nginx的upstream目前支持4种方式的分配
- 【OpenCV笔记 15-1】OpenCV寻找物体的凸包convexHull
- RB-tree与Hashtable的区别与选择
- 打击破解软件,终于有解决良方了!
- UIWindow&UIWindowLevel
- JAVA代码
- HTTP,TCP/IP相关
- Android版本更新
- 苏宁大造818发烧节,玩得是哪招?
- Comparable和Comparator的区别