物体最小包围矩形,最小包围圆
来源:互联网 发布:开淘宝手持身份证照片 编辑:程序博客网 时间:2024/05/02 00:10
1: opencv产生随机数
RNG 是一个类,它可以压缩一个64位的i整数。并可以得到scalar和array的随机数。首先要产生一个对象。uniform函数可以返回指定范围的随机数
注意不能写成rng.uniform(0,1),因为输入为int类型,会调用uniform(int,int),结果为0。
2:程序代码
// ConsoleApplication12.cpp : 定义控制台应用程序的入口点。
//
#include <opencv2/opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <vector>
using namespace std;
using namespace cv;
int main()
{
Mat testImage(500, 500, CV_8UC3);//画布大小500×500
RNG& rng = theRNG();//指针的运用
//按回车键一直更新
while (1)
{
testImage = Scalar::all(0);//将画布设置为黑色,每次按键后可更新 ,Scalar为结构体,常用于储存像素
//int count = (unsigned)rng % 100 +6;//随机生成点的数量
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在范围(500/1,500*4/5)随机产生 //cols和rows分别代表行和列
point.y = rng.uniform(testImage.rows / 4, testImage.rows * 3 / 4);//纵坐标y在范围(500/4,500*3/4)随机产生
points.push_back(point);
cout << "Point" << i + 1 << ": " << point << endl;//依次输出随机产生每个点的坐标
}
//输出并标记各点坐标
cout << "基于Mat的vector:\n" << Mat(points) << endl;//基于Mat类的vector将以矩阵形式输出坐标
for (int i = 0; i < count; i++)
circle(testImage, points[i], 5, Scalar(255, 0, 255));//以随机点为圆心,画出半径为5的实心圆
//寻找最小包围矩形
RotatedRect minRect = minAreaRect(Mat(points));
Point2f vertex[4];//用于存放最小矩形的四个顶点
minRect.points(vertex);//返回矩形的四个顶点给vertex
//绘制最小面积包围矩形
for (int i = 0; i < 4; i++)
line(testImage, vertex[i], vertex[(i + 1) % 4], Scalar(0, 0, 255));
//寻找最小包围圆
Point2f center;//变量圆心坐标
float radius = 0;//初始化圆半径
minEnclosingCircle(Mat(points), center, radius);//寻找最小包围圆
circle(testImage, center, cvRound(radius), Scalar(0, 255, 0));//绘制最小包围圆,cvRound对半径进行四舍五入
//输出
imshow("绘制检测", testImage);
char key;
key = (char)waitKey();
if (key == 15|| key == 'q' || key == 'Q')//按下ESC 或q 或 Q 退出
break;
}
return 0;
}
3:运行结果如图所示
按空格键或回车键可以不断更新随机点的坐标
- 物体最小包围矩形,最小包围圆
- 【OpenCV笔记 15-2】OpenCV寻找物体最小包围矩形和最小包围圆
- 最小包围矩形
- 凸多边形最小面积包围矩形
- opencv3寻找最小包围矩形-minAreaRect函数
- 最小包围矩形及绘制出来
- HDU3995 最小包围圆变形
- hdu 3007 最小包围圆
- matlab 实现最小包围圆
- 【OpenCV笔记 15-3】OpenCV计算物体最小包围矩形面积和周长
- 使用EmguCv计算包围物体的最小圆与最小可旋转矩形和不可选择矩形
- 退火算法求最小包围圆
- Ritter's求最小包围圆
- 获取shapefile文件最小包围矩形的c++程序
- Matlab最小面积包围四边形
- HDU 5251-矩形面积(点集的最小面积包围矩形)
- 矩形包围起来的面积最小的矩形的面积(HDU5251)
- zoj 1450 Minimal Circle(最小包围圆)
- Android开发环境搭建(二)——基于Eclipse的开发环境搭建
- 阿里云服务器配置oracle监听
- 模态对话框与非模态对话框的创建及的几种销毁方法与区别
- 牛顿迭代法求平方根原理
- hdu1551-二分&细节-Cable master
- 物体最小包围矩形,最小包围圆
- iOS开发中各种关键字的区别
- yum 第三方源
- RabbitMQ--基本原理
- Spark2.2 基于Yarn的两种提交模式剖析图解
- SystemClock.sleep(long ms)与Thread.sleep(long millis)分析
- HashMap各个版本分析
- [jzoj3865/JSOI2014]士兵部署
- windows安装opencv-----VS2010+Opencv-2.4.6(附: vs2010 小技巧)