转载请注明出处:Gaussichtml
官方翻译加实践,基于Windows版本。git
官网地址:这是连接。github
这篇教程旨在使用一些有趣的例子让你熟悉OpenBR背后的思想、对象以及动机。注意须要摄像头的支持。web
OpenBR是一个基于QT、OpenCV和Eigen而构建的C++库。它既能够在命令行使用br
命令来使用,还能够经过C++或C的API接口来使用。使用br
命令是最简单也是最快地起步方法,这篇教程中的全部例子都是基于br
命令的。算法
首先,确认OpenBR正确地安装。api
Windows版本的安装教程:这是Windows版教程。bash
若是是其余版本,请参照官网:官网。数据结构
官方文档存在必定错误,Windows版本可参照上面的连接。框架
在终端或命令行输入:学习
$ br -gui -algorithm "Show(false)" -enroll 0.webcam
若是每一步都按照上面进行操做,你的摄像头应该打开了而且开始捕捉视频了。恭喜你,你正在使用OpenBR。注:若是是Windows用户请切换到 openbr\build-msvc2013\install\bin
目录下,也能够把这个目录加到环境变量里面。
如今咱们来聊聊上面的命令到底发生了什么。-gui
, -algorithm
和enroll
是OpenBR的一些flag,它们被用来指定br
应用的指令操做。OpenBR规定全部的flag都带有-
前缀,以及全部的参数都用空格隔开。Flags一般须要特定数量的参数。全部可能的flags以及它们的值在这里:CL_API。
让咱们一个个解析一些这些参数和值:
-gui
是用来告诉OpenBR打开一个GUI窗口的flag。注意,若是使用-gui
,它必须是第一个传给br
的flag。-algorithm
是OpenBR最重要的flags之一。它须要一个参数,被称做算法串(algorithm string)。这个字符串决定了传输哪些图像以及元数据的管道。它由Transforms组成,浙江在后续的教程里讲解。-enroll
从Gallery或Format那里读文件,而且加入到算法管道中,以及将它们序列化给另外的Gallery或Format。-enroll
须要一个输入参数(在这个例子中是0.webcam
)以及一个可选的输出参数。OpenBR支持多种格式,包括.jpg
, .png
, .csv
和xml
。.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:Cascade和Draw。咱们来经过一个个的Transform来看看它是如何工做的:
FrontalFace
模型来检测正脸。lineThickness
决定了矩形框的厚度。false
指明图像的显示不须要等待按键操做。每个Transform完成一个任务而且将其输出传递给另外一个Transform。你能够随心所愿地链接任意多的Transform,可是要注意特定的Transform对它们的输入有着特定的需求。
你可能会思考,到底哪些对象被传递给了算法管道。在OpenBR中有两个对象来处理数据:
若是你想学习更多关于命令行或者全部的插件以及关键数据结构的内容,请参考连接的文档。下一篇教程将会更加深刻地探讨算法以及它们的使用。
这篇是 gaussic.github.io 的备份,欢迎拍砖。
转载请注明出处:Gaussic