C++ | PaddleOCR+OpenCV 实现文本识别的步骤和代码演示
导读
本期将介绍并演示C++ OpenCV使用PaddleOCR做文字识别的步骤与效果。
介绍
百度深度学习框架PaddlePaddle开源的OCR项目PaddleOCR近期霸榜github。使用测试后发现识别效果很好,对于简单的应用(车票车牌身份证等),直接用项目提供的模型即可使用。特殊应用,可自己训练后使用。上篇文章已介绍了Python OpenCV使用步骤,文章链接如下:
让OCR更简单 | PaddleOCR+OpenCV实现文字识别步骤与代码演示
本文将介绍C++ OpenCV使用PaddleOCR做文字识别步骤。
效果展示
第一部分使用Halcon OCR实例中的部分图片验证,测试效果如下视频:
第二部分使用车牌识别图片验证,测试效果如下视频:
实现步骤
(1) 下载PaddleOCR 2.0源码:
https://github.com/PaddlePaddle/PaddleOCR
解压后:
(2) 下载paddle_inference_install_dir文件并解压:
https://www.paddlepaddle.org.cn/documentation/docs/en/guides/05_inference_deployment/inference/windows_cpp_inference_en.html
解压后:
(3) 下载OpenCV Release版并解压,这里使用4.4.0版本:
(4) CMake编译PaddleOCR源码:使用版本我这里选择现成的VS2017 x64,CMake 3.16,注意下面蓝色部分中3个目录配置,然后依次Config和Generate,生成ocr_system.sln。
(5) 打开ocr_system.sln,选择x64 Release模式,生成ALL_BUILD,生成成功后,Release文件夹会生成ocr_system.exe。
(6) 下载识别模型(轻量级和通用型模型),下载地址:
https://github.com/PaddlePaddle/PaddleOCR
轻量级模型(模型文件小约9.4M,识别速度快,时间约为通用型模型一半,识别效果一般情况够用,相较通用型模型差一些):
通用型模型(模型文件大约155M,识别速度慢,识别效果相较轻量级模型更好):
(7) 将其他所需文件复制到ocr_system.exe同目录,包括config.txt(配置文件)、ppocr_keys_v1.txt(字库文件)
config.txt配置如下,注意修改下面红色部分路径为自己的
所需文件如下:
(8) cmd运行测试:ocr_system.exe config.txt 1.png
(9) 如果想将功能添加到自己项目中,可以查看main.cpp做参考
上面效果预览中的2个视频效果就是我加了MFC界面的简单应用,大家也可以自己尝试。视频中的MFC Demo源码与素材均已上传至知识星球中,需要的朋友可以加入获取。
推荐阅读
-
C++ 源代码生成 - 序言
-
在前向传播和定向传播阶段,Dropout 为什么能防止过度拟合,Dropout 和 BN 有什么区别?
-
TensorFlow 的基本概念和使用场景
-
桥接模式的解释和代码实现
-
vue 通过元素用户界面的 el-date-picker 报告页眉时间,其中包括开始时间和结束时间
-
[C 语言教程] [嵌入式程序设计] (I) 简介和先决条件 (II) 嵌入式程序设计基础 (III) 硬件基础 (IV) 硬件寄存器操作
-
C++ 中的抽象类和抽象方法
-
元素将时间和日期框设置为早于当前时间和日期,以禁用
-
令人震惊!原来,贡献开放源代码如此简单,几分钟就能上手!
-
C++ 类和对象 - 通过 4 级考试