OpenCV入门系列 —— cv::minEnclosingCircle 随机生成点坐标并计算最小包围圆
OpenCV入门系列 —— cv::minEnclosingCircle 随机生成点坐标并计算最小包围圆
- 前言
- 程序说明
- 输出结果
- 代码示例
前言
随着工业自动化、智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别、定位、抓取、测量,缺陷检测等),而针对不同作业场景进行解决方案设计时,通常会借助PCL、OpenCV、Eigen等简单方便的开源算法库进行方案的快速验证和迭代以满足作业场景下的目标需求。
为了让对工业机器视觉方向感兴趣的同学能够少走一些弯路,故推出了此一系列简易入门教程示例,让初次使用者能够最简单直观地感受到当前所用算法模块的执行效果。
后续会逐步扩增与工业机器视觉相关的一些其它内容,如:
项目案例剖析、场景数据分析、基础算法模块、相机评测 等;
如有兴趣可加入群聊(若入群二维码被屏蔽,则可以通过Q群(1032861997)或评论、私信博主“群聊”,邀请入群),与同道同学及圈内同行一起交流讨论。
程序说明
随机生成点坐标数据,并计算最小包围圆;
输出结果
代码示例
/** @File: min_enclosing_circle.cpp* @Brief: opencv course* @Description: 展示最小包围圆形的效果* @Version: 0.0.1* @Author: MuYv*/
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>int main(int argc, char** argv){//初始化变量和随机值cv::Mat image(600, 600, CV_8UC3);cv::RNG& rng = cv::theRNG();//循环,按下ESC,Q,q键程序退出,否则有键按下便一直更新while(1){//参数初始化char key;//键值int count = (unsigned)rng%100 + 3;//随机生成点的数量std::vector<cv::Point> points; //点值//随机生成点坐标for(int i = 0; i < count; i++ ){cv::Point point;point.x = rng.uniform(image.cols/4, image.cols*3/4);point.y = rng.uniform(image.rows/4, image.rows*3/4);points.push_back(point);}//对给定的 2D 点集,寻找最小面积的包围圆cv::Point2f center;float radius = 0;cv::minEnclosingCircle(cv::Mat(points), center, radius);//绘制出随机颜色的点image = cv::Scalar::all(0);for(int i = 0; i < count; i++ ){cv::circle(image, points[i], 3, cv::Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0, 255)), cv::FILLED, cv::LINE_AA);}//绘制出最小面积的包围圆cv::circle(image, center, cvRound(radius), cv::Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0, 255)), 2, cv::LINE_AA);//显示效果图cv::imshow("最小包围矩形检测示例", image);//按下ESC,Q,或者q,程序退出key = (char)cv::waitKey();if( key == 27 || key == 'q' || key == 'Q' ) break;}return 0;
}
注:部分测试所用图片数据来源于网络,如有侵权,请联系博主删除,谢谢。
OpenCV入门系列 —— cv::minEnclosingCircle 随机生成点坐标并计算最小包围圆相关推荐
- OpenCV入门系列 —— cv::dilate 图像膨胀
OpenCV入门系列 -- cv::dilate 图像膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别 ...
- OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀
OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...
- OpenCV入门系列 —— boxFilter盒子滤波
OpenCV入门系列 -- boxFilter盒子滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识 ...
- OpenCV入门系列 —— bilateralFilter双边滤波
OpenCV入门系列 -- bilateralFilter双边滤波 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也 ...
- OpenCV入门系列 —— Sobel边缘检测
OpenCV入门系列 -- Sobel边缘检测 前言 程序说明 输出结果 代码示例 总结 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别.定位 ...
- OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle()
OpenCV学习笔记(十八):凸包,最小包围区域算子:convexHull(),minAreaRect(),minEnclosingTriangle(),minEnclosingCircle() 1. ...
- OpenCV入门系列1:图像组成与OpenCV基本操作函数
文章目录 前言 一.图像组成 1.1 图片与像素点 1.2 RGB颜色系统 1.3 图像数值转换原理 1.4 彩色图与灰度图 二.OpenCV函数验证 2.1 引入OpenCV库 2.2 读入彩色图片 ...
- OpenCV入门系列2:图像叠加、填充和腐蚀
文章目录 前言 一.图像的叠加 1.1 叠加原理 1.2 叠加问题 1.3 问题解决 1.4 结果展示 二.图像的填充 2.1 填充方法介绍 2.2 复制法 2.3 轴对称法 2.4 中心对称法 2. ...
- opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...
最新文章
- OpenCV 错误:无法打开摄像头(打开摄像头卡机)
- 10个问题看透Transformer
- 巧用Eclipse Java编辑器调试
- python中如何打印两行代码间的空行_python 打印几行空行、 打印不换行
- 如何在 SAP Spartacus 产品明细页面添加自定义 UI
- C++静态类型转换(static_cast)
- htaccess是什么文件
- ipad是买WiFi版的好,还是买4G版的好?
- 【SLAM笔记】如何使用Eigen进行矩阵运算
- Leetcode 106.从中序与后序遍历序列重建二叉树
- teleport 组件的作用_对于组件的可重用性,大佬给出来6个级别的见解,一起过目一下
- Python读取一个文件并删除换行输出到另外一个文件中
- Zepto:基础学习
- Java微信公众号开发之微信公众平台账号申请注册
- 2020年度十大高薪岗位出炉,程序员霸榜!
- Some Thoughts
- 魔兽争霸php文件怎么打开,魔兽争霸之PHP设计模式
- getMonthsetMonth方法
- java arraylist 求和_java-ArrayList中类对象属性的总和
- 运维工程师岗位职责、职业路线和常用工具
热门文章
- 使用Python+Dlib构建人脸识别系统(在Nvidia Jetson Nano 2GB开发板上)
- 汽车租赁系统(对象+集合)
- x2go - nxagent的CPU占用为什么这么高?
- 【网络】无线路由器连接到移动网关,无线路由器上不了网
- ubuntu镜像下载
- Cadence SIP Layout 简单教程-第二章
- 定论——软件开发的方法论探讨
- windows下php环境搭建
- 华为交换机测试吞吐量软件,TamoSoft Throughput Test v1.0 Build 34 网络吞吐量测试工具...
- NISP和CISP报名条件