linux(debian系列)和 Windows 10配置seetaface6
seetaface6依賴于opencv,另外我們需要界面,所以也需要Qt(你也可以選擇其他的)。
這里的目標是配置好環境,能夠編譯并運行seetaface6給的demo。
那個demo中用到了sqlite數據庫,所以我們還需要安裝sqlite。
總的來說就是以下步驟:
一、安裝OpenCV
安裝依賴:
apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev如果不安裝這些依賴,可能會出現例如無法識別jpg圖片、無法打開mp4文件等問題,而且要在編譯前安裝好。
這里用官網給的步驟即可,目前最新的是opencv4.7,由于需要人臉識別,所以我們需要安裝opencv_contrib模塊。
https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html
注意,默認安裝路徑是/usr/local。
- 頭文件在/usr/local/include/opencv4
- 鏈接庫在/usr/local/lib
- cmake文件在/usr/local/cmake。
我們知道這三個就夠了??梢杂?D CMAKE_INSTALL_PREFIX=來指定安裝路徑。
這里假定為默認路徑/usr/local。
如果你不想自己編譯,可以用我打包好的:
https://github.com/sixsixQAQ/opencv4-dev
二、編譯安裝seetaface6
1. 去github找到seetafce6,這個只是個是demo,我們先不管它
2. 根據提示,seetaface6源碼在SeetaFace6Open
3. 根據提示下載
git clone --recursive https://github.com/SeetaFace6Open/index.git4. 編譯
然后會有一個index文件夾,我們需要挨個模塊編譯:按個進入它們的craft文件夾,運行build.linux.x64.sh。
但是編譯有順序要求,否則有的會無法編譯通過。
這里給個編譯腳本:
編譯得到的東西在index/build,里面有頭文件、鏈接庫、.cmake文件,是我們開發和編譯demo需要的。
5.配置路徑/安裝
你需要將編譯出的文件配置到位,放到/usr/lib、/usr/incldue等位置(這樣弊端是卸載不方便),或者在你的項目構建文件中填寫頭文件路徑、鏈接庫路徑(弊端是比較繁瑣,不方便遷移),否則會找不到文件。
我的做法是把它打包成.deb(推薦),方便安裝和卸載:https://github.com/sixsixQAQ/seetaface6-dev
$dpkg --info seetaface6-dev.deb新格式的 Debian 軟件包,格式版本 2.0。大小 5529512 字節:主控包=360 字節。226 字節, 9 行 control Package: seetaface6-devVersion: 1.0Architecture: amd64Maintainer: sixqaq@outlook.comDescription: seetaface6 development package.binary: /usr/binheaders: /usr/includelib: /usr/lib/seetaface6cmake: /usr/lib/cmake你也可以自己打包,很簡單,教程參見:如何制作deb包
三、安裝Qt5
由于demo用的是qt5,所以要安裝qt5。
安裝:略。
建議:完美解決QT在線安裝太慢
四、配置sqlite
apt install sqlite3 libsqlite3-dev這里sqlite3是命令行工具,-dev的是開發包,我們兩個都需要。
五、編譯運行seetaface6-demo
1.修改pro文件
刪除seetaface6-demo中的.pro.user文件,然后用qt creator打開.pro文件,把Qt5勾上來重新配置項目。
這個demo用的qmake,我們需要修改那個.pro文件,這里只求在linux運行即可,所以我把windows的全刪除了。
seetaface6-dev包中把seetaface6鏈接庫安裝到了/usr/lib/seetaface6,修改一下頭文件路徑和鏈接庫路徑即可。
2.下載模型
github上有模型的鏈接,下載、解壓,并放到你的Qt構建目錄下,重命名為models,
3.運行
點擊綠三角運行。
建議:沒攝像頭的買個攝像頭。
Windows 10 下配置
由于我主力系統是Linux,所以在配置Windows時遇到一些麻煩,淺講一下Windows。
主要講那個怎么構建。
為了使用shell,我使用cygwin來構建(你也可以用git-bash,差不多,但是MSYS有點小麻煩,需要自己再加PATH變量)。
看這個腳本(前面Linux給出的),
#!/bin/bashmodules="OpenRoleZoo SeetaAuthorize TenniS FaceBoxes FaceRecognizer6 FaceTracker6 Landmarker PoseEstimator6 QualityAssessor3 SeetaAgePredictor SeetaEyeStateDetector SeetaGenderPredictor SeetaMaskDetector FaceAntiSpoofingX6"for dir in $modules docd $dir/craftbash build.linux.x64.shcd - done我們將其中的bash build.linux.x64.sh換成./build.win.vc14.x64.cmd,主要必須有./,不然cygwin和git-bash不會將它當作windows腳本解析。
然而,僅僅說這樣還不夠,
我們打開一個build.wn.vc14.x64.cmd為例看一下:
注意,里面的-G"NMake Makefiles JOM"。我的情況是只安裝了最新的VS2022,它里面只有NMake,沒有這個叫JOM的東東。
起初嘗試把-G換成去掉,或者換成NMake Makefiles,結果發現似乎沒有編譯的痕跡,嘗試用cmake --build .,印象里好像會報錯來著,而且無法用cmake --install 來安裝。
心想一定有個底層的構建工具來完成它,找了半天才知道VS的構建工具是MSBuild。
一次完整的構建過程:
可以msbuild /m:8使用八線程編譯,雖然聽說不一定有效。
我們可以在程序菜單中打開Visual Studio的命令行終端來使用MSBuild,但是這樣就不能借助強大的Linux shell,如果你不嫌棄,可以這樣一個一個地改下去:
如果你想借助shell,那么這樣:
在所有模塊文件夾目錄外執行下面的腳本來替換,由于\r\n、\n的問題,替換時有些差異(注意你用的哪個替換腳本,就用哪個來構建,不要混用):
如果你使用git-bash:
如果你使用cygwin:
for file in `find -name build.win.vc14.x64.cmd` dosed -i ':a;N;s/-G\"NMake Makefiles JOM\" \^\r\n//g;ta' $filesed -i 's/jom -j16 install/msbuild.exe \/m:8 ALL_BUILD.vcxproj\r\nmsbuild.exe \/m:8 INSTALL.vcxproj/g' $file done替換后的文件類似下面:
@echo offset "BUILD_DIR=build.win.vc14.x64" set "BUILD_TYPE=Release" set "PLATFORM=amd64" set "PLATFORM_TARGET=x64"set "WITH_SSL=OFF"set "INSTALL_DIR=../../../build"call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM%cd %~dp0md "%BUILD_DIR%"cd "%BUILD_DIR%"md "%INSTALL_DIR%"cmake "%~dp0.." ^ -DCMAKE_BUILD_TYPE="%BUILD_TYPE%" ^ -DPLATFORM="%PLATFORM_TARGET%" ^ -DORZ_WITH_OPENSSL="%WITH_SSL%" ^ -DCMAKE_INSTALL_PREFIX="%INSTALL_DIR%"msbuild.exe /m:8 ALL_BUILD.vcxproj msbuild.exe /m:8 INSTALL.vcxprojexit /b替換完成后,在頂層執行構建腳本:
(構建之前,和Linux一樣,記得在OpenRoleZoo那個文件里加上#include <functional>)
總結
以上是生活随笔為你收集整理的linux(debian系列)和 Windows 10配置seetaface6的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oppoR9m降级 root刷机 Mag
- 下一篇: linux 其他常用命令