OpenCV的随机数发生器
来源:互联网 发布:linux 修改权限命令 编辑:程序博客网 时间:2024/05/01 21:47
目标:
1、使用随机数发生器类 RNG 产生均匀分布的随机数
2、使用putText()函数在图片中添加文字
code 1;
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "E:/common/OpencvLib.h"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
#define Window_Height 400
#define Window_Width 600
#define NUMBER 10 //几何目标个数
//产生随机颜色
static Scalar randomColor(RNG &rng)
{
int icolor=(unsigned) rng;
return Scalar(icolor&255,(icolor>>8)&255,(icolor>>16)&255);
//return Scalar(255,255,255);
}
//绘制随机直线
int Drawing_Randn_Lines(Mat Image,char *window_name,RNG rng)
{
int LineType=8; //线条类型
Point pt1,pt2;
for(int i=0;i<NUMBER;i++)
{
pt1.x=rng.uniform(0,Window_Height);
pt1.y=rng.uniform(0,Window_Height);
pt2.x=rng.uniform(0,Window_Height);
pt2.x=rng.uniform(0,Window_Height);
//产生随机颜色、粗细、长度的线条
line(Image,pt1,pt2,randomColor(rng),rng.uniform(1,5),LineType);
imshow(window_name,Image);
if(waitKey(1000)>=0)
{
return -1;
}
}
return 0;
}
//写入随机文本
int Displaying_random_text(Mat Image,char *window_name,RNG rng)
{
int lineType=8;
for(int i=0;i<NUMBER;i++)
{
Point org;
org.x=rng.uniform(20,Window_Height-20);
org.y=rng.uniform(20,Window_Height-20);
putText(Image,"Hello,OpenCV",org,rng.uniform(0,8),rng.uniform(0,100)*0.05+0.1,randomColor(rng),rng.uniform(0,5),lineType);
//putText(Image,"Hello,OpenCV",org,1,rng.uniform(0.1,5.0),randomColor(rng));
imshow(window_name,Image);
if(waitKey(1000)>0)
{
return -1;
}
}
return 0;
}
//文本颜色渐变效果
int Displaying_Big_End(Mat image,char* window_name,RNG rng)
{
Size textsize=getTextSize("OpenCV,My Career",CV_FONT_HERSHEY_COMPLEX,3,5,0);
Point org((Window_Width-textsize.width)/2,(Window_Height-textsize.height)/2);
int lineType=8;
Mat image2;
for(int i=0;i<255;i=i+2)
{
/*image2是image和scalar::all(i)相减的结果,是针对每一个像素的操作,如果是三通道,怎每个通道都需要做减法操作*/
image2=image-Scalar::all(i);
putText(image2,"OpenCV,My Career",org,CV_FONT_HERSHEY_COMPLEX,1,Scalar(i,i,255),5,lineType);
imshow(window_name,image2);
if(waitKey(50)>0)
{
return -1;
}
}
return 0;
}
void main()
{
//初始化一个背景为黑色矩阵
Mat image=Mat::zeros(Window_Height,Window_Width,CV_8UC3);
char *window_name="MyOpencv";
RNG rng;
//随机线条演示
Drawing_Randn_Lines(image,window_name,rng);
//随机文本演示
Displaying_random_text(image,window_name,rng);
//文本颜色变化
Displaying_Big_End(image,window_name,rng);
waitKey(0);
}
解释:
要想把一个文本写入图像的具体位置:必须先用getTextSize()函数,获取的文本的大小,再利用putText()函数设置文本位置在图像的原点坐标。
putText()函数的第二个参数Point org 表示图像的左下角坐标,因此假设要想把文本写到图片右上角起始位置的方法是:
Size tests=getTextSize(text,font,1,thickness,&baseline);
putText(image,text,Point(0,tests.height),font,1,Scalar(0,255,0),thickness);//左下角为坐标中心
- OpenCV的随机数发生器
- opencv随机数发生器RNG
- 正态分布的随机数发生器
- OpenCV学习:随机数发生器&绘制文字
- opencv学习日常之随机数发生器RNG
- 密码学里的随机数发生器
- 密码学里的随机数发生器
- 性能较好的随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- 随机数发生器
- opencv c++函数 基础7 随机数发生器&绘制文字
- 安卓运行环境
- Xmind & MindManager
- oracle存储过程常用技巧
- flume-ng简单介绍
- 59 Which background process of a database instance, using Automatic Storage Management (ASM), connec
- OpenCV的随机数发生器
- 文章标题
- nginx初测
- maven 下载 源码和javadoc命令
- autorelease pool
- 获取。。。。先占位
- 为什么WAF(Web Aplication Firewalls)不能确保数据库安全?
- C++容器的拷贝注意细节
- java包装器