paddleOCR在Windows环境下c++ infer部署教程
目录
下载开源项目
下载c++预测库
安装opencv和cmake
使用cmake生成vs2017工程文件
使用VS207对工程进行编译
设置“启动项目
属性配置
生成解决方案
本教程采用Visual Studio 2017 + CMake 3.15.5 + Opencv-3.4.6-vc14_vc15对paddleOCR c++ infer做编译,完成paddleOCR 在Windows环境下c++上的部署。
下载开源项目
下载地址:https://github.com/PaddlePaddle/PaddleOCR
下载c++预测库
下载地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/05_inference_deployment/inference/windows_cpp_inference.html
我下载的是预测库v2.0-rc0版本(paddle_inference.zip),将项目和预测库解压到cpp_infer目录下,便于后续对工程进行环境配置
安装opencv和cmake
网上教程较多,在此不再赘述
使用cmake生成vs2017工程文件
步骤1:在cpp_infer文件夹下新建build文件夹,用于保存编译后的工程文件。
步骤2:打开cmake编译软件,将source code一栏设置到cpp_infer文件夹目录,build the binaries一栏设置到build文件夹下:
步骤3:单击“config”
步骤4:在弹出的对话框中设置编译所使用的IDE以及编译平台,参考如下设置。
步骤5:单击“configure”,第一次配置会报错,不要怕,修改如下设置,设置完成之后,再单击“configure”按钮。
出现“Configuring done”,表示配置成功:
步骤6:单击“generate”,出现“Generaing done”表示成功
步骤7:单击“open priject”,自动跳转值Visual Studio 2017开发界面,至此相关配置工作完成啦,查看bulid文件夹下,会发现生成了一个“.sln”的VS工程文件,说明可以使用VS进行编译了。
使用VS207对工程进行编译
设置“启动项目
第一步:我们选择解决方案为“Debug”,平台 x64,release编译操作一样,不再赘述;
第二步:右键单击“ocr_system”工程,选择“设为启动项目”,如下所示:
属性配置
此处坑比较多,仔细检查各个配置项
第一步:同样右键单击“ocr_system”,选择“属性”,弹出属性配置页面。
在“C/C++->常规 ->附加包括目录”下填写如下包括文件
第二步:在“链接器 ->常规->附加库目录”下填写如下包括文件
第三步: 在“链接器->输入 ->附加依赖项”下填写如下包括文件,
(此处注意:
1. 即使是在Debug下,opencv使用的是release版本的库,不带d结尾;
2. 在编译paddleDetection工程时,libyaml-cppmt.lib不能使用带debug库,否则报错,附加依赖项中也要填写debug库的路径,这个问题坑了我一天)。
paddle_fluid.lib mklml.lib libiomp5md.lib glog.lib gflags_static.lib libprotobuf.lib xxhash.lib libcmt.lib shlwapi.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cudart.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cublas.lib C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\cudnn.lib D:\ProgramFiles\opencv\build\x64\vc15\lib\opencv_world346.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib |
第四步:检测“生成事件->生成后事件->命令行”中库文件路径的正确填写。
第五步:修改“c/c++ ->代码生成->运行库”,设置为多线程(/MT)
生成解决方案
右键单击“ocr_system”,选择“重新生成”,无报错,即配置成功,接下来就是阅读代码,做后续开发喽。