轉載請註明出處: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