日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

「seetaface2」中科院人脸识别引擎seetaface2在Linux Qt上的配置教程

發布時間:2024/1/1 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 「seetaface2」中科院人脸识别引擎seetaface2在Linux Qt上的配置教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

筆者的最新私人博客網站經過一段時間的努力,已經初期建設完畢,csdn上的博文會逐漸轉移過去~~ 歡迎訪問呀~ |=傳=送=門=> 多多洛的博客

2016年,中科院山世光老師開源了其研發的seetaface人臉識別引擎,使用VS編譯,只能在window系統上運行,若想在Mac和Linux系統上使用,還需進行手動編譯;隨后又發布了seetaface2版本,這一版本的重大特性在于增加了對Linux和Android的支持,為這兩個平臺的研發人員提供了很大的便利。

筆者目前主要在Linux平臺上進行人臉識別研究和學習,發現網絡上目前幾乎沒有對seetaface2在Linux平臺上的完整配置教程,經過筆者的多次試驗,總結出在Linux Qt上的較為完整的配置教程(及配置過程中可能遇到的問題),記錄如下。


一、seetaface2在LInux上的配置

先介紹一下筆者的開發環境:操作系統是Ubuntu 16.04,Qt版本是4.8.6,Qt Creator版本是4.4.0,OpenCV版本是2.4.9,g++/gcc 編譯器的版本是5.4.0。

(一)配置前的準備

Step1 安裝依賴環境

打開終端,輸入以下命令進行安裝:

# 更新軟件列表 sudo apt-get update # 安裝依賴環境 sudo apt-get install libopenblas-dev libprotobuf-dev libssl-dev
Step2 下載seetaface2的源碼、模型文件

官方的下載鏈接是:Seetaface2 For Linux

進入鏈接,依次下載以下四個文件(頭文件、鏈接庫文件、FaceCropper鏈接庫文件、模型文件),如下圖所示:

并將其放到本地相關目錄里。

Step3 在計算機中進行配置

一般來說,第三方的頭文件和鏈接庫都統一放于“/usr/local/”目錄下,從而便于管理和使用(之前配置OpenCV時,頭文件和鏈接庫也是放在這個目錄下的)。所以筆者將頭文件放在了“/usr/local/include/” 目錄下(為了便于整理,新建一個子文件夾,叫seeta,將頭文件放入),將鏈接庫放在了“/usr/local/lib/” 目錄下。筆者的配置步驟如下,可供參考:

  • 筆者先將所有庫文件統一整理到lib文件夾里,頭文件整理到seeta文件夾里,如下圖所示:

  • 在當前目錄下打開終端,輸入命令:

    sudo mv seeta /usr/local/include/ sudo mv ./lib/lib*.so /usr/local/lib/
  • 這樣,在計算機上的配置就完畢了,接下來是在Qt里的配置。

    Step4 在Qt中進行配置

    新建一個基于C++的Qt Console Application,Build System選擇Qmake,創建完成后打開pro文件,加入以下內容,對頭文件和庫文件進行配置:

    INCLUDEPATH += /usr/local/include# OpenCV libs LIBS += -L/usr/local/lib \ -lopencv_core\ -lopencv_imgproc\ -lopencv_highgui\ -lopencv_ml\ -lopencv_video\ -lopencv_features2d\ -lopencv_calib3d\ -lopencv_objdetect\ -lopencv_contrib\ -lopencv_legacy\ -lopencv_flann # Seetaface2 libs LIBS += -L/usr/local/lib \ -lholiday -lSeetaFaceDetector200 -lSeetaFaceRecognizer200 \ -lSeetaPointDetector200 -lSeetaFaceCropper200

    (注:筆者的OpenCV頭文件也是在/usr/local/include下的,庫文件也是在/usr/local/lib下的,讀者可自身的路徑情況進行修改)


    關于pro文件的配置:

    筆者最初由于pro文件配置錯誤,導致Build工程的時候出現了很多問題,所以pro文件一定要書寫正確,不然會導致無法找到庫文件。

    INCLUDEPATH += 是用于指定頭文件的目錄,可以用絕對或相對路徑;相對路徑中./可以省略;路徑中不允許出現空格。

    LIBS += 是動態鏈接庫的配置語句,注意“+=”中間一定不能有空格,這是一個符號,一個整體;后接“-L”指定路徑,然后“-l”(小寫的L)指定庫的名稱,注意這里庫的名稱指的是庫文件名“lib”之后,“.so”之前的那段字,比如:

    這個庫文件的文件名是“libSeetaPointDetector200.so”,那么對應的庫的名稱是“SeetaPointDetector200”。
    LIBS += 可以寫在一行,也可以用 \ 斷行。

    其他的注意事項可以參考這位博主的博文,總結得很不錯。


    到這里就基本上配置完成了,接下來通過一個demo來檢驗配置是否成功。

    二、seetaface2實例

    配置完成后,打開主程序main.cpp,添加以下代碼:

    #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>#include <seeta/FaceDetector2.h> #include <seeta/PointDetector2.h> #include <seeta/FaceCropper2.h> #include <seeta/Struct_cv.h>#define FD_MODEL "./bindata/SeetaFaceDetector2.0.ats" #define PD_MODEL "./bindata/SeetaPointDetector2.0.pts5.ats"int main() {seeta::FaceDetector2 FD(FD_MODEL);seeta::PointDetector2 PD(PD_MODEL);seeta::FaceCropper2 FC;cv::Mat mat = cv::imread("demo.png");seeta::cv::ImageData image = mat;auto face = FD.Detect(image);auto points = PD.Detect(image, *face);// crop face according to 5 landmarksseeta::cv::ImageData cropped_face = FC.Crop(image, points);cv::Mat cropped_face_mat = cropped_face;cv::imwrite("cropped_face.jpg", cropped_face_mat);return 0; }

    這是官方上提供的一個SeetaFace2 Cropper的例子,可以通過人臉的5個特征點將一幅圖像中的人臉ROI切割出來并保存在本地。實驗結果如下:

    三、編譯時可能出現的問題(持續總結更新中…)

    ? 報錯:’nullptr’ was not declared in this scope

    這是因為seetaface2使用了大量的C++11的新特性,所以編譯時需要開啟C++11的全部特性。解決方法如下:

  • 先確認自己的G++編譯器的版本(打開終端,輸入g++ --version 后回車),記下自己的版本
  • 打開pro文件進行編輯,如果自己的g++版本 <4.7,那么添加如下配置指令:QMAKE_CXXFLAGS += -std=c++0x,如果版本 >= 4.7,則添加QMAKE_CXXFLAGS += -std=c++11,然后清理一下工程,重新Build即可(注意,一定要確認好版本,不同版本的配置是不通用的)。
  • 總結

    以上是生活随笔為你收集整理的「seetaface2」中科院人脸识别引擎seetaface2在Linux Qt上的配置教程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。