效果展示


如何实现

1.OpenCV环境:个人采用的是OpeCV-440-release版本,网上有很多相关教程
2.PaddleOCR: 这里需要3个文件

models:识别模型下载
paddle_inference_install_dir:预测库下载
PaddleOCR-release-2.0:PaddleOCR 2.0源码下载

models下载
预测库下载:2.0.0版本迅雷下载链接
***PaddleOCR-release-2.0:***
接下来在下图文件夹中建立一个build文件夹

利用CMake编译PaddleOCR源码:添加好路径后,依次点击Configure,Genrate即可

点击ocr_system.sln进入项目中,将ocr_system设为启动项

我简单修改了一下main函数,如果采用我的main函数记得同时将在ocr_rec.h和ocr_rec.cpp中的run函数参数列表末尾添加上vector<vector>&result,这里是因为我想让结果返回在main函数里

#include "glog/logging.h"
#include "omp.h"
#include "opencv2/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include<opencv2\opencv.hpp>
#include <chrono>
#include <iomanip>
#include <iostream>
#include <vector>
#include <cstring>
#include <fstream>
#include <numeric>
#include <include/config.h>
#include <include/ocr_det.h>
#include <include/ocr_rec.h>using namespace std;
using namespace cv;
using namespace PaddleOCR;int main(int argc, char **argv) {OCRConfig config("config.txt");std::string img_path("22.jpg");cv::Mat srcimg = cv::imread(img_path, cv::IMREAD_COLOR);if (srcimg.empty()){cerr << "图片打开失败" << endl;return -1;}resize(srcimg,srcimg,cv::Size(640,640));imshow("检测图",srcimg);DBDetector det(config.det_model_dir, config.use_gpu, config.gpu_id,config.gpu_mem, config.cpu_math_library_num_threads,config.use_mkldnn, config.max_side_len, config.det_db_thresh,config.det_db_box_thresh, config.det_db_unclip_ratio,config.visualize, config.use_tensorrt, config.use_fp16);Classifier *cls = nullptr;if (config.use_angle_cls == true) {cls = new Classifier(config.cls_model_dir, config.use_gpu, config.gpu_id,config.gpu_mem, config.cpu_math_library_num_threads,config.use_mkldnn, config.cls_thresh,config.use_tensorrt, config.use_fp16);}CRNNRecognizer rec(config.rec_model_dir, config.use_gpu, config.gpu_id,config.gpu_mem, config.cpu_math_library_num_threads,config.use_mkldnn, config.char_list_file,config.use_tensorrt, config.use_fp16);auto start = std::chrono::system_clock::now();std::vector<std::vector<std::vector<int>>> boxes;det.Run(srcimg, boxes);system("cls");vector<vector<string>>result;rec.Run(boxes, srcimg, cls,result);  //输出结果auto it_result = result.begin();while (it_result != result.end()){auto it_str = (*it_result).begin();while (it_str != (*it_result).end()){cout << *it_str++;}cout << endl;++it_result;}auto end = std::chrono::system_clock::now();auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);std::cout << "Cost  "<< double(duration.count()) *std::chrono::microseconds::period::num /std::chrono::microseconds::period::den<< "s" << std::endl;Mat img = imread("ocr_vis.png");imshow("检测结果图",img);waitKey(0);return 0;
}

最后想要让我们的代码运行起来还需要一些条件

config.txt中需要修改三处位置,分别指向我们下载好的识别模型

这里为了方便,我将三个模型名字改了一下,因为我将models和ppocr_keys_v1.txt都直接放入放入当前目录了,所以写的是相对路径。ppocr_keys_v1.txt在PaddleOCR-release-2.0\ppocr\utils下,最后我们添加需要识别的图片和在main函数里修改图片路径,点击运行就可以出现文章开头的识别效果啦
更多的功能可以在这基础上进行扩展,如UI,交互等
参考博客:https://blog.csdn.net/stq054188/article/details/114002913

PaddleOCR实现车牌识别系统相关推荐

  1. 【AI达人创造营三期】在地平线X3上部署车牌识别系统

    [AI达人创造营三期]在地平线X3上部署车牌识别系统 一. 项目介绍 本项目属于AI达人创造营三期项目,主要探索如何将PaddleOCR训练的车牌识别模型部署在地平线X3的板子上,并实现实时推理. 二 ...

  2. 你不知道的车牌识别系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 有小伙伴后台和小白说,能不能推荐几个适合入门的开源视觉项目,因为根 ...

  3. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

  4. 汽车车牌识别系统实现(四)--字符识别+代码实现

    字符识别 一.字符识别算法的实现 车牌字符识别是车牌识别中的最后一步,也是决定车牌识别成功与否的关键步骤.字符识别是对经过车牌定位.车牌纠正和车牌字符划分后得到的各个车牌字符进行识别的过程.字符识别利 ...

  5. 汽车车牌识别系统(六)-- 项目中的各个文件解析

    汽车车牌识别系统上传至CSDN之后,好多小伙伴都对项目中的各个文件存在疑问,该篇文章主要是为了解析项目中的各个文件.如果对项目中的各个文件已经很熟悉的小伙伴,请自觉略过. - LPR:项目名称- ch ...

  6. 【深度学习】你不知道的车牌识别系统

    有小伙伴后台和小白说,能不能推荐几个适合入门的开源视觉项目,因为根据实际项目和代码学起来相对来说比较快.小白收集了一些比较简单的开源的项目,会陆陆续续的分享给大家,文末有源码地址. 今天首先带来的是一 ...

  7. am5718_基于TI AM5718 车牌识别系统解决方案 - 飞凌嵌入式行业资讯 - 保定飞凌嵌入式技术有限公司...

    随着ITS(智能交通系统)技术的发展,越来越多的新技术不断地在ITS中得到应用,其中在收费系统中,车牌识别系统得到广泛的重视,应用技术也日趋成熟.目前大多车牌识别系统都是基于PC机.DSP.FPGA的 ...

  8. 基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

    基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位.字符分割和字符识别三个主要部分.本文首先确定车辆 ...

  9. python车牌识别系统开源代码_汽车牌照识别系统【YOLO+MLP】

    车牌识别系统可以自动检测并识别图像中的车辆牌照,其算法主要包括牌照定位.牌照分割.字符识别等步骤.本文将给出一种基于深度学习的车牌识别系统方案. 要快速掌握开发人工智能系统的技能,推荐汇智网的 机器学 ...

  10. python的opencv 车牌识别 开源_毕节进出口车牌识别系统怎么样

    毕节进出口车牌识别系统怎么样 gzheu8il 毕节进出口车牌识别系统怎么样 系统拓扑图如下:该系统以社区中心机房为枢纽,有机的将智慧家居住户.社区数字化服务.物业数字化管理.社区智能化管理结合起来, ...

最新文章

  1. 可旋转的2K显示器,写代码逼格要到位,免费包邮送到家
  2. MEMS为何独领风骚?看完这篇秒懂!
  3. 图文+动画讲解排序算法总结!!
  4. win10 .net framework 3.5 安装报错 0x800F0954问题
  5. 简述oracle函数的功能,Oracle 最常用功能函数经典汇总 (zz)
  6. 解决Oracle监听器服务不能启动的问题
  7. 为什么哲学是最难的学科_世界十大哲学难题:全球哲学家都苦恼的哲学问题盘点...
  8. 打印机显示正在未连接服务器,打印机状态未联机是怎么回事
  9. 计算机怎么搜索隐藏的网络,电脑如何连接隐藏wifi 笔记本电脑如何添加隐藏wifi?-192路由网...
  10. gateway集成swagger
  11. HTML实现可编辑下拉框
  12. 淘宝触屏版宝贝详情改造(一)
  13. APP加固案例:慈溪农村商业银行
  14. HTML5网页设计图片如何,网页设计中优化图片的6个技巧
  15. 【宅男福利】百度云下载不限速软件,电脑和看视频无广告软件
  16. Nginx Web 基础入门
  17. 国际版抖音正确打开方式
  18. 001 线性代数之行列式:定义、逆序数、余子式与代数余子式、n个易算行列式、范德蒙行列式
  19. Qt - 驾校科目-考试系统-窗口交互
  20. HTML5开发APP页面(动效篇)

热门文章

  1. 耳机频谱曲线测试软件,通过耳机频响曲线来调EQ,免费的音质提升你要吗?
  2. 微信小程序点击图片全屏展示,并可以翻下一张图
  3. python第三方库:使用Jieba对抓取的数据进行中文分词
  4. 看图识WAF-搜集常见WAF拦截页面
  5. linux双机热备软件Rose,Linux Rose HA 双机热备软件原理
  6. linux能安装cad快速看图不,ubuntu下能过wine安装cad快速看图
  7. 苹果手机长截屏_涨知识了!原来苹果手机也可以长截屏,还不知道的,快来学一学...
  8. 原生js获取cookie
  9. Linux系统高级编程系列教程
  10. Linux安装docker-ce教程 centos依赖包安装