首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PaddleOCR v2.6新特征与C++编译推理详细步骤演示

PaddleOCR v2.6新特征与C++编译推理详细步骤演示

作者头像
Color Space
发布于 2022-09-26 02:39:24
发布于 2022-09-26 02:39:24
3.4K00
代码可运行
举报
运行总次数:0
代码可运行

导读

本文主要介绍PaddleOCR v2.6的新特征与C++编译推理详细步骤演示。(公众号:OpenCV与AI深度学习

PaddleOCR 2.6 8月24日PaddleOCR更新了2.6版本,下面是主要更新内容:

详细介绍请查看对应github: https://github.com/PaddlePaddle/PaddleOCR 往前相关PaddleOCR内容:

C++编译与推理 C++编译与推理详细步骤如下: 【1】下载PaddleOCR 2.6源码,解压之后在PaddleOCR-release-2.6\deploy\cpp_infer下新建build文件夹

【2】下载paddle_inference推理库文件并解压:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://paddle-inference.readthedocs.io/en/master/guides/install/download_lib.html#windows

以CPU版本为例:

【3】CMake编译,CMake版本建议3.16及以上。注意下面几个目录设置,OpenCV_DIR(自己下载OpenCV4.5或以上版本)、PADDLE_LIB(第2步下载解压后的目录)

如果提示找不到Git目录,需要自己下载Git(https://git-scm.com/)并将bin目录加入环境变量,然后重启CMake再点Config,然后Generate。

【4】CMake编译完成后,打开ppocr.sln,选择生成ALL_BUILD项目。

可能的报错:

(1) 无法打开包括文件: “dirent.h”: No such file or directory

------解决方法:下载dirent(https://github.com/tronkko/dirent),引用到工程,添加到ppocr项目的包含目录:D:\PaddleOCR\dirent-master;D:\PaddleOCR\dirent-master\include;

(2) mkdir找不到标识符

------解决方法:修改添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#ifdef MSC_VER
  mkdir(FLAGS_output.c_str(), 0777);
#endif

【5】上述步骤完成后已可以成功生成ppocr.exe,接下来需要下载推理模型:

(1) 英文识别推理,先下载英文推理模型并解压:

然后拷贝en_dict.txt到ppocr.exe同目录,修改代码中的设置,重新生成项目。

找一张测试图:

命令行运行指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ppocr.exe --det_model_dir=./model_1/en_PP-OCRv3_det_infer/ --rec_model_dir=./model_1/en_PP-OCRv3_rec_infer/ --image_dir=./imgs/

推理结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./imgs\1.JPG
0       det boxes: [[12,53],[636,48],[636,102],[12,107]] rec text: Improve Brand Awareness rec score: 0.960821
1       det boxes: [[95,137],[573,143],[572,197],[94,191]] rec text: The Best to Rely on rec score: 0.941508
The detection visualized image saved in ./output//1.JPG

(2) 中英文识别推理,先下载中英文推理模型并解压:

然后拷贝ppocr_keys_v1.txt到ppocr.exe同目录,修改代码中的设置,重新生成项目。

找两张测试图:

命令行运行指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ppocr.exe --det_model_dir=./model_2/ch_PP-OCRv3_det_infer/ --rec_model_dir=./model_2/ch_PP-OCRv3_rec_infer/ --image_dir=./imgs/

推理结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./imgs\2.JPG
0       det boxes: [[387,29],[457,27],[457,48],[387,50]] rec text: xuetian rec score: 0.893902
1       det boxes: [[369,50],[475,50],[475,82],[369,82]] rec text: 《雪天》 rec score: 0.986969
2       det boxes: [[362,106],[482,106],[482,130],[362,130]] rec text: 作者:贾浅浅 rec score: 0.942913
3       det boxes: [[299,151],[535,150],[535,170],[299,171]] rec text: women yi qi qu niaoniao rec score: 0.896251
4       det boxes: [[297,173],[542,171],[542,199],[297,201]] rec text: 我们一起去尿尿, rec score: 0.839751
5       det boxes: [[314,236],[336,236],[336,248],[314,248]] rec text: n rec score: 0.433731
6       det boxes: [[351,233],[525,233],[525,250],[351,250]] rec text: niao leyi tiaoxian rec score: 0.925806
7       det boxes: [[309,253],[536,253],[536,283],[309,283]] rec text: 你,尿了一条线, rec score: 0.935438
8       det boxes: [[311,317],[336,317],[336,329],[311,329]] rec text: wo rec score: 0.566691
9       det boxes: [[348,311],[527,311],[527,331],[348,331]] rec text: niao leyigekeng rec score: 0.959383
10      det boxes: [[307,333],[540,333],[540,364],[307,364]] rec text: 我,尿了一个坑!rec score: 0.931369
11      det boxes: [[198,471],[677,469],[677,490],[198,492]] rec text: 贯浅浅,女,汉,197911月出生,当代作家,诗人 rec score: 0.879745
12      det boxes: [[158,512],[690,509],[690,530],[158,533]] rec text: 西北大学文学院副教投,陕西有青年文学协副主席,中国作协副 rec score: 0.907279
13      det boxes: [[161,554],[390,554],[390,571],[161,571]] rec text: 主席、当代作家费平四之女 rec score: 0.880638
The detection visualized image saved in ./output//2.JPG
***************************
./imgs\3.JPG
0       det boxes: [[37,33],[701,40],[701,94],[37,87]] rec text: 《黄瓜,不仅仅是吃的》 rec score: 0.947897
1       det boxes: [[257,150],[482,150],[482,184],[257,184]] rec text: 作者:贾浅浅 rec score: 0.82198
2       det boxes: [[11,238],[174,238],[174,258],[11,258]] rec text: 我先竖中指为敬 rec score: 0.937345
3       det boxes: [[258,270],[480,270],[480,311],[258,311]] rec text: 寂寞的时候 rec score: 0.994962
4       det boxes: [[75,295],[95,295],[95,306],[75,306]] rec text: 6 rec score: 0.0878426
5       det boxes: [[111,298],[124,298],[124,306],[111,306]] rec text: 7 rec score: 0.155042
6       det boxes: [[323,354],[413,354],[413,403],[323,403]] rec text: 黄瓜 rec score: 0.998457
7       det boxes: [[304,443],[434,445],[433,489],[303,487]] rec text: 无疑是 rec score: 0.995151
8       det boxes: [[239,535],[501,535],[501,573],[239,573]] rec text: 全天下最好的 rec score: 0.904731
The detection visualized image saved in ./output//3.JPG

中文识别结果也没问题,就是有股子尿骚味!!!

—THE END—

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV与AI深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
音视频开发基础知识(1)——图像基本概念
**像素是图像的基本单元,一个个像素就组成了图像。你可以认为像素就是图像中的一个点。**在下面这张图中,你可以看到一个个方块,这些方块就是像素。
老马的编程之旅
2022/06/23
5500
音视频开发基础知识(1)——图像基本概念
音视频直播技术--YUV视频格式详解
YUV(也称YCbCr)是电视系统所采用的一种颜色编码方法。其中 Y 表示明亮度,也就是灰阶值,它是基础信号;U 和 V 表示的则是色度,UV 的作用是描述影像色彩及饱和度,它们用于指定像素的颜色。U和V不是基础信号,它俩都是被正交调制的.
音视频_李超
2020/04/02
1.8K0
NV12与YV12,YUV的主要格式「建议收藏」
YUV是编译true-color颜色空间(color space)的种类,Y’UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度与浓度(Chrominance、Chroma)
全栈程序员站长
2022/11/08
14.7K0
NV12与YV12,YUV的主要格式「建议收藏」
YUV文件格式[通俗易懂]
转:https://blog.csdn.net/armwind/article/details/52190123,文章不错特转载过来备忘
全栈程序员站长
2022/09/13
2.6K0
YUV文件格式[通俗易懂]
Android Bitmap转I420的坑,以及图文详解YUV420数据格式
今天Android要把Bitmap里的数据转成I420,用的YUV库,但是总有色差。查了好久,最终发现
望天
2020/03/11
3.7K0
音视频知识体系(基础篇3)----图像颜色空间
我们从视频的信号表示方法开始讲起,逐步深入到视频压缩编码的原理。我们主要从下面几个要点来讲解或者加深记忆。
jerrypxiao
2021/02/04
2K0
音视频开发基础知识(2)——最通俗易懂的视频编解码理论知识
音视频学习项目:LearnVideo AndroidMediaCodecDem
老马的编程之旅
2022/06/23
1K0
音视频开发基础知识(2)——最通俗易懂的视频编解码理论知识
Android 基于OpenGl ES渲染yuv视频(十二)
本文是基于前面两篇OpenGl理论学习的实际应用,更好的巩固一下前面的学习内容,重点讲下如何使用OpenGl去渲染一个yuv格式视频。
PengJie
2021/01/14
2.5K0
图像基础知识之YUV
YUV是编译true-color颜色空间(color space)的种类,Y’UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度与浓度(Chrominance、Chroma)
全栈程序员站长
2022/09/07
1.4K0
图像基础知识之YUV
YCbCr数据格式
  主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值), 每 2x2 个点保存一个 Cr和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用RGB(R,G,B 都是 8bit unsigned) 模型, 每个点需要8x3=24 bits(如下图第一个图). 而现在仅需要8+(8/4)+(8/4)=12bites, 平均每个点占12bites(如下图第二个图)。这样就把图像的数据压缩了一半。
瓜大三哥
2018/07/30
1.8K0
YCbCr数据格式
详解YUV数据格式
我们在讲 FFmpeg 系列的时候,有提到 YUV 的。其中包括YUV播放器、简单的YUV格式介绍。
233333
2019/08/02
2.1K0
常见图像格式总结
raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。是sensor将光信号转化为电信号时的电平高低的原始记录,单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
刘盼
2023/09/11
2.4K0
常见图像格式总结
【音视频原理】图像相关概念 ⑤ ( YUV 数据存储 | I444 格式说明 | I422 格式说明 | I420 格式说明 | NV12 格式说明 | NV21 格式说明 )
YUV 4:4:4 采样格式 , Y 亮度分量 与 UV 色度分量 的比例是 1:1 ;
韩曙亮
2024/01/21
1.7K0
【音视频原理】图像相关概念 ⑤ ( YUV 数据存储 | I444 格式说明 | I422 格式说明 | I420 格式说明 | NV12 格式说明 | NV21 格式说明 )
OpenGL 使用 Shader 实现 RGBA 转 I420(附项目源码)
I420 格式的图像在视频解码中比较常见,像前面文章中提到的,在工程中一般会选择使用 Shader 将 RGBA 转 YUV,这样再使用 glReadPixels 读取图像时可以有效降低传输数据量,提升性能,并且兼容性好。
字节流动
2021/11/22
1.4K1
OpenGL 使用 Shader 实现 RGBA 转 I420(附项目源码)
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
YUV模型是根据一个亮度(Y分量)和两个色度(UV分量)来定义颜色空间,常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等,其中比较常见的YUV420分为两种:YUV420P和YUV420SP。
全栈程序员站长
2022/09/13
3.5K0
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
Android二维码扫描开发(二):YUV图像格式详解
前一篇提到了,相机返回的是YUV格式的图像数据,那么YUV到底是怎样一种格式呢?本篇将对YUV图像格式进行详细的解释。 上一篇中,我们了解了Android二维码扫描开发的实现思路和原理。其中从相机里获
非著名程序员
2018/02/02
2.1K0
Android二维码扫描开发(二):YUV图像格式详解
Sony RX0M2(杂记)
我最近兼职赚了点小钱,就想买个玩具。我年前有点想买佳能,为了ML的相机固件,我把目光聚焦到5D2,虽然1k8可以买到一个相机,但是是单机身而已,而且说实话是这个机器实在是太老了。。。最气的是,我买相机用来干什么?肯定没人找我拍照的,我就是未来折腾而已。后面就把目光聚集到Sony的阿尔法1代,后面还是很尴尬,因为,我这个钱就是可以买机身,还是很麻烦,而且我是一直想使用Sony的SDK。所以这个选项也就打消了,直到看到RX0M2的时候,眼前一亮,小小机身,塞进这么多的功能。重点是USB摄像头,SDK控制的功能,我真的爱了,一直就想买个测试机。看了一些缺点也很明显,不过作为一名工程师,岂是可以难的住我的。
云深无际
2022/03/07
1.3K0
Sony RX0M2(杂记)
对yuv存储格式中的yuv420p和yuv420sp的理解
  yuv是一种颜色编码系统,它将图像的亮度和色度分离开来。y表示亮度,即黑白信息;uv表示色度,即颜色信息。yuv常用于视频压缩和传输中,因为它可以更有效地表示人眼对亮度和色度的敏感度不同的特性。人眼对亮度更加敏感,而对色度则不那么敏感。这就是为什么在视频压缩中,可以通过减少色度分量的采样率以减少数据量,而不会对观看体验产生明显的影响。
故乡的樱花开了
2024/02/23
3.7K0
对yuv存储格式中的yuv420p和yuv420sp的理解
OpenGL 使用 Shader 实现 RGBA 转 I420(附项目源码)
I420 格式的图像在视频解码中比较常见,像前面文章中提到的,在工程中一般会选择使用 Shader 将 RGBA 转 YUV,这样再使用 glReadPixels 读取图像时可以有效降低传输数据量,提升性能,并且兼容性好。
字节流动
2021/11/26
1K0
你知道RGB,那你知道什么是YUV么?
元旦的时候接到一个任务,对 Android Camera 的缩略图展示性能做一些优化。作为一个 Camera 0 经验的菜鸟,各种铺面而来的专业术语瞬间就让我迷失了 ... 那么 0.1 s。
菜天哥哥
2019/03/14
2.9K1
你知道RGB,那你知道什么是YUV么?
推荐阅读
相关推荐
音视频开发基础知识(1)——图像基本概念
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验