Windows 下 PaddleOCR C++推理部署 cmake vs2017

cmake 下载地址:https://cmake.org/files/v3.17/

opencv:https://opencv.org/releases/  我下载的是win版本,下载后直接运行可执行文件。

vs2017 我之前安装好了的,如果想要安装文件可以找我。

根据自己的电脑配置选择,我下载的是 cmake-3.17.5-win64-x64.msi   ,要下载msi版本的,一开始我下载zip,还以为能用的,也能打开exe可执行文件。结果就是个坑,根本没安装上。

我的项目目录文件如下:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第1张图片

需要准备的工具:vs2017, cmake3.17,opencv3.4.7 (paddle官网用的是vs2019的)

目录说明:

fluid_inference_install_dir :paddleOCR推理库,win版 选择 cpu_avx_mk,我用的1.8.5版。

地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_guide/inference_deployment/inference/windows_cpp_inference.html

models 即deb, cls, rec模型存放文件夹:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第2张图片

每个模型文件夹下分别包含:model 和params 两个文件。

模型下载地址即官网的推理模型:https://github.com/PaddlePaddle/PaddleOCR ,选在inference model 下载即可:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第3张图片

PaddleOCR 目录即把官方项目下载下来:https://github.com/PaddlePaddle/PaddleOCR

还有两张图片用来测试。

一,用cmake-gui 生成 VS 工程

我的配置如下:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第4张图片

一开始没有配置opencv以及PADDLE_LIB , 也不知道在哪里配置,所以configure 后会报错,把这两路径配置上,CMAKE 中 cmake-configuration-type选择release。以及with_mkl 打勾后configure就没问题了。

然后 Generating 。完成后,现实configuring done, generating done!

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第5张图片

由此,就在项目OCR\PaddleOCR\deploy\cpp_infer\build 下生成vs 工程:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第6张图片

二,在vs2017中生成解决方案

在OCR\PaddleOCR\deploy\cpp_infer\build 下打开 ocr_system.sln ,配置和平台选择release 和x64。

在项目属性中配置工程。基本上都已经自动配置好了,但还是要检查一下,我就遇到一个路径文件配置错的。

c/c++ -- 附加包含目录:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第7张图片

链接库--输入--附加依赖项:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第8张图片

这里我就遇到一个bug:依赖项的第一行自动把我配置错了,变成..\OCR\fluid_inference_install_dir\paddle\lib\libpaddle_fluid.dll

但这里显然不对,要的是lib文件,而且这个目录下是没有libpaddle_fluid.dll。一开始我还以为文件名错了,直接把paddle_fluid.dll 改成libpaddle_fluid.dll,

果然不行,后来才发现这里怎么能配置dll文件。。。是lib文件才对。改成libpaddle_fluid.lib路径就对了:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第9张图片

c/c++--代码生成--运行库 设置为多线程(/MT:

这个也是个坑,一开始没改。报错一大堆:检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”

 

接下来就可以生成解决方案。

但,报错:常量中有换行符。。。。

参考:https://www.cnblogs.com/cppskill/p/11776384.html

进入项目 -> 属性->常规,将字符集设置为多字节字符集

在C/C++ => 命令行中添加(“/utf-8”)

 

然后生成解决方案 OK !在 ..\OCR\PaddleOCR\deploy\cpp_infer\build\Release下生成exe可执行文件:

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第10张图片

这里注意要把\OCR\fluid_inference_install_dir\paddle\lib\paddle_fluid.dll 文件拷贝过来。

 

三,运行程序

修改配置文件:\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt:

修改参数:

det_model_dir 检测模型路径 \OCR\models\ch_ppocr_mobile_v1.1_det_infer

cls_model_dir 角度模型路径 \OCR\models\ch_ppocr_mobile_v1.1_cls_infer

rec_model_dir 识别模型路径 C:\Users\yao\Desktop\OCR\models\ch_ppocr_mobile_v1.1_rec_infer

char_list_file 字典路径  注意中英文的区别 \OCR\PaddleOCR\ppocr\utils\ppocr_keys_v1.txt

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第11张图片

配置完终于可以跑了!

命令行cd 到可执行文件目录下:OCR\PaddleOCR\deploy\cpp_infer\build\Release

执行:ocr_system.exe C:\Users\yao\Desktop\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt C:\Users\yao\Desktop\OCR\0.jpg     

出来的结果乱码。。。很好!

第一反应是字典和模型是否匹配,因为如果是只识别英文和数字的模型但却给了中文字典,肯定会乱。

确认模型和字典都么问题后,查到资料 先命令行输入:输入CHCP 65001 完美解决:

再运行:ocr_system.exe C:\Users\yao\Desktop\OCR\PaddleOCR\deploy\cpp_infer\tools\config.txt C:\Users\yao\Desktop\OCR\0.jpg    

Windows 下 PaddleOCR C++推理部署 cmake vs2017_第12张图片

完美!

接下来,把自己训练的模型套上去试试!

 

 

 

 

你可能感兴趣的:(paddleOCR,c++,部署paddleOCR,paddleOCR,OCR,windows)