文档章节

OpenBr快速入门

Gaussic
 Gaussic
发布于 2016/08/05 14:59
字数 1490
阅读 505
收藏 1

转载请注明出处:Gaussic

官方翻译加实践,基于Windows版本。

官网地址:这是链接

这篇教程旨在使用一些有趣的例子让你熟悉OpenBR背后的思想、对象以及动机。注意需要摄像头的支持。

OpenBR是一个基于QT、OpenCV和Eigen而构建的C++库。它既可以在命令行使用br命令来使用,还可以通过C++或C的API接口来使用。使用br命令是最简单也是最快地起步方法,这篇教程中的所有例子都是基于br命令的。

首先,确认OpenBR正确地安装。

Windows版本的安装教程:这是Windows版教程

如果是其他版本,请参照官网:官网

官方文档存在一定错误,Windows版本可参照上面的链接。

在终端或命令行输入:

$ br -gui -algorithm "Show(false)" -enroll 0.webcam

如果每一步都按照上面进行操作,你的摄像头应该打开了并且开始捕捉视频了。恭喜你,你正在使用OpenBR。注:如果是Windows用户请切换到 openbr\build-msvc2013\install\bin 目录下,也可以把这个目录加到环境变量里面。

现在我们来聊聊上面的命令到底发生了什么。-gui-algorithmenroll是OpenBR的一些flag,它们被用来指定br应用的指令操作。OpenBR规定所有的flag都带有-前缀,以及所有的参数都用空格隔开。Flags通常需要特定数量的参数。所有可能的flags以及它们的值在这里:CL_API

让我们一个个解析一些这些参数和值:

  • -gui是用来告诉OpenBR打开一个GUI窗口的flag。注意,如果使用-gui,它必须是第一个传给br的flag。
  • -algorithm是OpenBR最重要的flags之一。它需要一个参数,被称作算法串(algorithm string)。这个字符串决定了传输哪些图像以及元数据的管道。它由Transforms组成,浙江在后续的教程里讲解。
  • -enrollGalleryFormat那里读文件,并且加入到算法管道中,以及将它们序列化给另外的GalleryFormat-enroll需要一个输入参数(在这个例子中是0.webcam)以及一个可选的输出参数。OpenBR支持多种格式,包括.jpg.png.csvxml.webcam格式告诉OpenBR从计算机的摄像头采集图像帧作为输入。

让我们来试试一个稍微更复杂一点的例子。毕竟,OpenBR能做更多的事情,而不仅仅是开摄像头。再次打开终端输入:

$ br -gui -algorithm "Cvt(Gray)+Show(false)" -enroll 0.webcam

这里,通过简单地在算法串中添加Cvt(Gray),我们输入普通的BGR(这里是OpenCV的BGR模式)图像并且将其转换成了灰度图像。Cvt,是 convert的缩写,是OpenBR Transform的一个例子,Show也是。实际上,OpenBR中的每一个算法串都是组成一个管道的一系列Transform的结合,甚至连+都是Pipe的缩写,这是另外一种OpenBR Transform

通常,Transforms会接收参数。我们指定Gray作为Cvt的一个运行时参数,来告诉这个Transform需要将图像转换到哪个颜色空间。我们也可以写Cvt(HSV),如果我们想转换为HSV颜色空间,或者Cvt(Luv),如果我们想转换为LUV。参数可以通过键值对的方式来提供(Cvt(Gray)等价于Cvt(colorSpace=Gray))。注意,如果只想传入值的话,请按照算法定义的参数顺序来传值。试试将上面的算法串改为Show(true)来看看修改参数对输出的影响(提示:按住一个键然后查看变化)。

我们来把这个例子变得更加刺激以及更加贴近OpenBR的目的。人脸检测往往是人脸识别的第一步。我们来执行一下OpenBR中的人脸检测。打开终端输入:

$ br -gui -algorithm "Cvt(Gray)+Cascade(FrontalFace)+Draw(lineThickness=3)+Show(false)" -enroll 0.webcam

你的摄像头应该再一次被打开了,但是这一次在里的脸部多了一个框。我们添加了两个新的Transform:CascadeDraw。我们来通过一个个的Transform来看看它是如何工作的:

  • Cvt(Gray):将图像从BGR转换为灰度图。灰度图是Cascade正常工作所必需的。
  • Cascade(FrontalFace):这个是对OpenCV Cascade分类框架的一个封装版本。它使用FrontalFace模型来检测正脸。
  • Draw(lineThickness=3):获取Cascade检测到的矩形框并且画到摄像头图像帧中。lineThickness决定了矩形框的厚度。
  • Show(false):在GUI窗口中显示图像。false指明图像的显示不需要等待按键操作。

每一个Transform完成一个任务并且将其输出传递给另一个Transform。你可以随心所愿地连接任意多的Transform,但是要注意特定的Transform对它们的输入有着特定的需求。

你可能会思考,到底哪些对象被传递给了算法管道。在OpenBR中有两个对象来处理数据:

  • Files通常被用来存储磁盘上相关元数据文件的路径信息(键值对形式)。在上面的例子中,我们将Cascade检测到的矩形框作为一个元数据,然后交给Draw来可视化。
  • Templates是图像和Files的容器。图像在OpenBr中是OpenCV Mats,且是Templates的成员变量。Templates可以包含一个或多个图像。

如果你想学习更多关于命令行或者所有的插件以及关键数据结构的内容,请参考链接的文档。下一篇教程将会更加深入地探讨算法以及它们的使用。

这篇是 gaussic.github.io 的备份,欢迎拍砖。

转载请注明出处:Gaussic

© 著作权归作者所有

共有 人打赏支持
Gaussic
粉丝 409
博文 28
码字总数 66971
作品 0
宝山
私信 提问
OpenBR 入门教程

欢迎来到OpenBR!在此我们设计了一系列教程用于使你快速了解OpenBR是什么,怎么工作及其命令行接口。这些教程并没有刻意按照某种顺序排着,只要你开心,随意跳着看。如果需要帮助,请联系我们...

AaronW
2016/07/19
4.2K
0
OpenBR —— 开源的生物识别工具

OpenBR 是一个用来从照片中识别人脸的工具。还支持推算性别与年龄。

oschina
2013/08/06
12
0
OpenBR 识别的结果肿么分析呀

刚从github上整了个 OpenBR,通过命令行去比较两个jpg图片,其返回结果让人摸不着头脑。官方没有对结果做相关的解释,有点纠结。大侠来说明一下吧~ 更新:比较的两张照片是:

徐庆-neo
2013/08/07
2.7K
7
OpenBR只能在64位电脑上编译吗

从官方网站的介绍( http://openbiometrics.org/doxygen/latest/windows_msvc.html)看, OpenBR只给出了在X64,即64位电脑的编译过程,没有X86,即32位电脑的编译过程,我在32位电脑上貌似编译没有...

向建华
2013/08/15
1K
1
49 款人脸检测/识别的API、库和软件

自从谷歌眼镜被推出以来,围绕人脸识别,出现了很多争议。我们相信,不管是不是通过智能眼镜,人脸识别将在人与人交往甚至人与物交互中开辟无数种可能性。 为了帮助研究过程中探索人脸识别,...

oschina
2013/08/19
35K
39

没有更多内容

加载失败,请刷新页面

加载更多

总结:volatile关键字

实现内存可见性原理: 对volatile变量执行写操作时,会在写操作之后加入一条store指令,将CPU缓存数据强制刷新到主内存中 对volatile变量执行读操作的时候,会在读操作前加入一条load指令,重...

浮躁的码农
25分钟前
0
0
OSChina 周六乱弹 —— 看见这花臂了么?赶紧叫大佬!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享周华健的单曲《有没有一首歌会让你想起我》 《有没有一首歌会让你想起我》- 周华健 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
112
4
Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
3
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部