C++版本fastdeploy 在linux环境下的安装与配置
1. 预编译安装下载
参考github中的文档 进行选择下载: https://github.com/PaddlePaddle/FastDeploy/blob/develop/README_CN.md#fastdeploy-quick-start-cpp
我选择的是c++ cpu版本。
下载下来后解压,将解压文件放在任意文件夹下,文件夹名最好不要包含中文,防止发生某种未知的错误。
2. 环境配置
由于我的项目是通过cmake进行编译的,所以需要将fastdeploy的include和lib导入到CMakeLists.txt中去。由于我cmake也是初学,所以很多部分也不是很懂,但是按照以下内容去设置是可以运行的。
set(FASTDEPLOY_INSTALL_DIR "/home/yuxian/study/cccc/c++pro/fastdeploy-linux-x64-1.0.7")
set(FASTDEPLOY_INCS "/home/yuxian/study/cccc/c++pro/fastdeploy-linux-x64-1.0.7/include")
set(FASTDEPLOY_LIBS "/home/yuxian/study/cccc/c++pro/fastdeploy-linux-x64-1.0.7/lib")
include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake)
INCLUDE_DIRECTORIES(${FASTDEPLOY_INCS})
LINK_DIRECTORIES(${FASTDEPLOY_LIBS})
target_link_libraries(pro1 ${FASTDEPLOY_LIBS})
这些命令也许有几行是多余的,但也懒得去管了,等待后面系统学习过cmake后再说。
此时,进行cmake就可以编译通过,但在运行过程中会报错误。
主要错误就是fastdeploy所需要的几个第三方库没有找到。我们打开fastdeploy所在的文件夹,可以看到一个third_libs文件夹,这个文件夹下就存放了一些所依赖的第三方库文件,只需要将这些库放入到系统变量中去就可以了。
最好是将所有库文件都放到同一个文件夹下:LIBS
vim ~/.bashrc
在最某位加上
export LD_LIBRARY_PATH=/home/yuxian/study/cccc/c++pro/fastdeploy-linux-x64-1.0.7/third_libs/LIBS
保存后
source ~/.bashrc
如此就可以啦!!!贴上测试代码
#include "fastdeploy/vision.h"
int main()
{
uchar *mem_pic = nullptr;
FILE *file;
mem_pic = new uchar[6268932 / sizeof(uchar)];
file = popen("adb -s cdc3f475 shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1920x1080@1920x1080/0 -s", "r");
long size = 0;
fread(mem_pic, sizeof(uchar), 6268932 / sizeof(uchar), file);
pclose(file);
cv::_InputArray pic_arr(mem_pic, 6268932 / sizeof(uchar));
cv::Mat src_mat = cv::imdecode(pic_arr, 1);
namespace vision = fastdeploy::vision;
auto model = vision::detection::YOLOv5("/home/yuxian/coc/fastdepoly/army.onnx");
vision::DetectionResult res;
model.Predict(src_mat, &res);
auto vis_im = vision::VisDetection(src_mat, res, 0.9);
cv::imwrite("/home/yuxian/study/cccc/c++pro/pro1/vis_image.jpg", vis_im);
}