OpenCV笔记(六)——随机数产生器、绘制文字

一、随机数产生器

在OpenCV中,我们主要使用RNG类(即Random Number Generator)来产生随机数。

RNG rng(); // 默认以0xffffffff作为随机数产生器的种子

我们也可以以系统的当前时间作为随机数产生器的种子。这也是常用的手段。

#include <time.h>

RNG rng( (unsigned int)time(NULL) );

另外,我们可以产生一定范围内的均匀分布或者高斯分布(均值为零)的随机数

rng.uniform(0, 10); // 产生[0, 10)的均匀分布的整型随机数

rng.gaussian(sigma); // 参数sigma为高斯分布的标准差,则随机数在(-sigma, sigma)、(-2*sigma, 2*sigma)、(-3*sigma, 3*sigma)的概率分别为0.6826、0.9544、0.9974。

其实uniform方法的实现机制很简单:

inline int RNG::uniform(int a, int b) { return a == b ? a : (int)(next()%(b - a) + a); } // 其中next()返回一个随机数

二、绘制文字

主要有两个方法putText和getTextSize。

void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false)

这个函数在图像中绘制文字。

text表示传入的文字。

org表示文字的左上角/左下角的坐标,取决于最后一个参数。

fonFace表示字体,从数字0到7,然后16,分别代表9种字体,详细见文档。

fontScale表示文字的大小,文字基准大小乘以fontScale,就是文字的最终尺寸。

bottomLeftOrigin为false的时候,以参数org为文字的左上角。true的时候,以参数org为文字的左下角。

Size getTextSize(const string& text, int fontFace, double fontScale, int thickness, int* baseLine)

这个函数返回文字在图像中所占的尺寸,即width和height。

函数向baseline写入文字底部最低处的y坐标。

时间: 2024-11-05 12:46:14

OpenCV笔记(六)——随机数产生器、绘制文字的相关文章

iOS 学习笔记六 【APP中的文字和APP名字的国际化多语言处理】

今天为新手解决下APP中的文字和APP名字的国际化多语言处理, 不多说了,直接上步骤: 1.打开你的项目,单机project名字,选中project,直接看图吧: 2.创建Localizable.strings文件 (名字必须为:[Localizable.strings]) (改国际化的app名字一样步骤,[InfoPlist.strings]) 创建后的名字:现在你可能没有左边的那个三角,等下就有了,别急哈! 3.看图,找到途中位置:添加就行,可以不要base, 4.添加完就可以看到左边的黑三

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

Python 3 学习笔记(六)----装饰器

一.定义 装饰器本质是函数,装饰其他函数,就是为其它函数添加附加功能 二.装饰器原则 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 三.实现装饰器的必要知识 1.函数即是变量 1 # def foo(): 2 # print("in the foo") 3 # bar() #bar未定义 4 # foo() 5 6 7 # def bar(): 8 # print("int the bar") 9 # def foo(): 10 # prin

Android群英传笔记系列二view的绘制(一)

三 .view的绘制 1.  使用方法:通过继承view并重写它的onDraw()方法来完成绘图. 2.  具体实现: a.先定义一个Canvas对象,这个对象类似于一个花板,定义方法如下:Canvas canvas=new Canvas(bitmap); b.我们可以看到在定义Canvas对象时,我们传入了一个bitmap对象,那么这个bitmap的作用是什么呢?其实bitmap的作用是存储所有绘制在Canvas上的像素信息.比如: canvas.drawBitmap(bitmap1,0,0,

[Swift通天遁地]八、媒体与动画-(5)使用开源类库绘制文字、图形、图像、图表、SVG

本文将演示如何通过金刚鹦鹉的类库,进行文字.图像.图表和图形的绘制. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '9.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod "Macaw" 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文件

RNG—随机数产生器

RNG 随机数产生器 RNG g_rng(12345); /******************************************************************************************************/ 用OpenCV做算法的朋友们肯定为随机数烦恼过,新版本一直支持随机数产生器啦,而且还继续支持之前版本的c格式的函数,不过与时俱进,我这里介绍C++的RNG类.它可以压缩一个64位的i整数并可以得到scalar和array的随机数.目

【OpenCV笔记】使用VS2012和OpenCV2.4.9搭建配置OpenCV开发环境

使用MS Visual C++来创建OpenCV工程,由于不同的VS版本在配置时有所差别,现特把配置过程总结下来,以方便自己和其他朋友使用. 1.软件准备 安装Visual Studio2012和OpenCV2.4.9 这里就不再对软件的安装和环境变量的设置进行说明了,其他类似的文章的设置都大抵相似,本文重点介绍一下VS2012环境的配置. 2.配置VS2012环境 (1)新建工程 你可以创建简单的控制台应用或者拥有图形用户界面的复杂应用,此处我们选择最简单常用的控制台应用. 理解解决方案(So

用TextPaint来绘制文字

TextPaint是paint的子类,用它可以很方便的进行文字的绘制,一般情况下遇到绘制文字的需求时,我们一般用TextPaint所提供的方法.开始学习如何绘制文字之前,我们必须要先了解下android中文字是怎么绘制到屏幕上的,文字的格式又是怎么样的. 一.FontMetrics 1.1 理论知识 它是一个Paint的内部类,作用是“字体测量”.它里面呢就定义了top,ascent,descent,bottom,leading五个成员变量其他什么也没有,和rect很相似.如果你不信,我们可以去

在Image控件中绘制文字

//Canvas 在Image控件中绘制文字 procedure TForm1.Button1Click(Sender: TObject);begin  image1.Canvas.Font.Size:= 72; //设置文字大小  image1.Canvas.TextOut(1,1,'Delphi'); //输出文字end; 来自为知笔记(Wiz) 在Image控件中绘制文字