Visual Studio中部署PaddleOCRv5 (借助ncnn框架)

PaddleOCRv5_ncnn

PaddleOCRv5 在Visual Studio中进行图片OCR检测(ncnn框架+open-mobile实现),尝试对nihui的ncnn-android-ppocrv5检测算法的剥离与移植。

本项目Github链接如下:PaddleOCRv5_ncnn

写在前面

本仓库代码是基于nihui的ncnn-android-ppocrv5项目代码而修改的,原仓库代码是部署在Android端的,对于想在其他环境部署来说,需要进行代码剥离和移植。本仓库的代码即是执行该次尝试,尝试在Windows短的Visual Studio中部署该算法。

环境配置

本仓库代码的运行环境如下:

  • Visual Studio 2019

  • ncnn-20250503-windows-vs2019

  • opencv-mobile-3.4.20-windows-vs2019

注:并不需要和本仓库代码的配置环境保持一致,可以根据Visual Studio的版本,下载对应的ncnn和opencv-mobile的版本即可。

推理设置

(1)先在Visual Studio新建一个空白工程,将本仓库代码放到该工程中。

在这里插入图片描述

(2)在工程中载入推理需要依赖的库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要添加的依赖项如下:

ncnn.lib
GenericCodeGen.lib
glslang.lib
glslang-default-resource-limits.lib
MachineIndependent.lib
OSDependent.lib
SPIRV.lib
opencv_core3420.lib
opencv_features2d3420.lib
opencv_highgui3420.lib
opencv_imgproc3420.lib
opencv_photo3420.lib
opencv_video3420.lib

在这里插入图片描述

(3)选择开始执行,应该在工程的Release的目录下可以成功地生成.exe文件。将weights文件夹和测试图像复制到Release下的路径。
在这里插入图片描述

(4)执行推理。

在这里插入图片描述

推理图片的指令如下:

PaddleOCRv5.exe single japan.png     // 推理图像
PaddleOCRv5.exe folder images        // 推理文件夹(多张图像)  

输出结果会保存在output文件夹下。

推理结果

推理结果如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写在后面

  • 由于原本的opencv不支持中文和其他语言显示,因此使用的是nihui发布的open-mobile,该库可以支持简单的opencv操作,同时支持中文日文等的显示。但是不知道为什么,我无法在windows端成功地调用电脑的摄像头,也就没有办法进行实时推理的测试。
  • 有尝试在ubuntu平台移植算法,由于opencv-mobile库的原因,无法成功编译库,因此也没有办法完整正常推理。
  • 本仓库代码对nihui原始的仓库做了部分修改,选择通过读取.txt字符文件的方式读取字符,而源代码中是将字符一整个写在.h文件中,我觉得会增加编译负担,就进行了修改。

创作不易,如果觉得这个仓库还可以的话,麻烦给一个star,这就是对我最大的鼓励。

Reference

  • ncnn-android-ppocrv5
  • QT-YOLO-OCR-CPP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90807.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中级全栈工程师笔试题

解释ACID特性,如何在node.js中实现事务操作针对React单页应用,请提供至少5种性能优化方案,并解释其原理: 减少首屏加载时间优化渲染性能资源加载策略状态管理优化代码分割方案 如何防止以下攻击: JWT令牌挟持Graph QL查…

Windows---动态链接库Dynamic Link Library(.dll)

DLL的“幕后英雄”角色 在Windows操作系统的生态中,有一类文件始终扮演着“幕后英雄”的角色——它们不像.exe文件那样直接呈现为用户可见的程序窗口,却支撑着几乎所有应用程序的运行;它们不单独执行,却承载着系统与软件的核心功…

深入分析计算机网络传输层和应用层面试题

三、传输层面试题(Transmission Layer)传输层位于 OSI 七层模型的第四层,它的核心任务是为两个主机之间的应用层提供可靠的数据传输服务。它不仅承担了数据的端到端传输,而且还实现了诸如差错检测、数据流控制、拥塞控制等机制&am…

【RH134 问答题】第 2 章 调度未来任务

目录crontab 文件中的用户作业时间格式怎么解释?如果需要以当前用户身份计划周期性作业,在上午 8 点到晚上 9 点之间每两分钟一次输出当前日期和时间,该作业只能在周一到周五运行,周六或周日不能运行。要怎么做?要计划…

【ee类保研面试】通信类---信息论

25保研er,希望将自己的面试复习分享出来,供大家参考 part0—英语类 part1—通信类 part2—信号类 part3—高数类 part100—self项目准备 文章目录**面试复习总纲****Chap2: 熵、相对熵和互信息 (Entropy, Relative Entropy, and Mutual Information)****…

vue2+node+express+MongoDB项目安装启动启动

文章目录 准备环境 安装MongoDB 安装 MongoDB Compass(图形化数据库管理工具) 安装 Postman(接口测试工具) 项目结构 配置项目代理 项目启动 提交项目 生成Access Token 准备环境 默认含有node.js、npm 安装MongoDB 下载地址:https://www.mongodb.com/try/download/com…

JavaEE初阶第十二期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(十)

专栏:JavaEE初阶起飞计划 个人主页:手握风云 目录 一、多线程案例 1.1. 定时器 一、多线程案例 1.1. 定时器 定时器是软件开发的一个重要组件,是一种能够按照预设的时间间隔或在特定时间点执行某个任务或代码片段的机制。你可以把它想象成…

EDoF-ToF: extended depth of field time-of-flight imaging解读, OE 2021

1. 核心问题:iToF相机的“景深”死穴我们之前已经详细讨论过,iToF相机的“景深”(有效测量范围)受到光学散焦的严重制约。问题根源: 当iToF相机的镜头散焦时,来自场景不同深度的光信号会在传感器像素上发生…

符号引用与直接引用:概念对比与实例解析

符号引用与直接引用:概念对比与实例解析 符号引用和直接引用是Java虚拟机(JVM)中类加载与执行机制的核心概念,理解它们的区别与联系对于深入掌握Java运行原理至关重要。下面我将从定义、特性、转换过程到实际应用,通过具体示例全面比较这两类…

每日一讲——Podman

一、概念1、定义与定位Podman(Pod Manager)是符合OCI标准的容器引擎,用于管理容器、镜像及Pod(多容器组)。它无需守护进程(Daemonless),直接通过Linux内核功能(如命名空间…

Spring Boot DFS、HDFS、AI、PyOD、ECOD、Junit、嵌入式实战指南

Spring Boot分布式文件系统 以下是一些关于Spring Boot分布式文件系统(DFS)的实现示例和关键方法,涵盖了不同场景和技术的应用。这些示例可以帮助理解如何在Spring Boot中集成DFS(如HDFS、MinIO、FastDFS等)或模拟分布式存储。 使用Spring Boot集成HDFS 基础配置 // 配…

解决GoLand运行go程序报错:Error: Cannot find package xxx 问题

问题描述 一个简单的go程序,代码如下 package mainimport "fmt" func main() {// 占位符,和java的String.format用法一样fmt.Printf("我%d岁,我叫%s", 18, "yexindong") }结构如下当我想要运行时却报错 Error:…

Spring MVC设计精粹:源码级架构解析与实践指南

文章目录一、设计哲学:分层与解耦1. 前端控制器模式2. 分层架构设计二、核心组件源码解析1. DispatcherServlet - 九大组件初始化2. DispatcherServlet - 前端控制器(请求处理中枢)请求源码入口:FrameworkServlet#doGet()请求委托…

k8s之控制器详解

1.deployment:适用于无状态服务1.功能(1)创建高可用pod(2)滚动升级/回滚(3)平滑扩容和缩容2.操作命令(1)回滚# 回滚到上一个版本 kubectl rollout undo deployment/my-app# 回滚到特定版本&…

.NET Core中的配置系统

传统配置方式文件Web.config 进行配置。ConfigurationManager类配置。.NET配置系统中支持配置方式文件配置(json、xml、ini等)注册表环境变量命令行自定义配置源Json文件配置方式实现步骤:创建一个json文件,把文件设置 为“如果较…

kafka的消费者负载均衡机制

Kafka 的消费者负载均衡机制是保证消息高效消费的核心设计,通过将分区合理分配给消费者组内的消费者,实现并行处理和负载均衡。以下从核心概念、分配策略、重平衡机制等方面详细讲解。一、核心概念理解消费者负载均衡前,需明确三个关键概念&a…

腾讯云edges on部署pages

腾讯云edges on部署pages适用场景部署方式官方文档 适用场景 Next.js Hexo 以及用React Vue等现代前端框架构建的单页应用全栈项目开发 通过Pages Function KV等能力 实现轻量化的动态服务快速部署与迭代 通过Github等代码管理平台集成 每次代码提交时自动构建和部署网站 注…

SpringAI入门及浅实践,实战 Spring‎ AI 调用大模型、提示词工程、对话记忆、Adv‎isor 的使用

上一次写AI学习笔记已经好久之前了,温习温习,这一章讲讲关于Spring‎ AI 调用大模型、对话记忆、Adv‎isor、结构化输出、自定义对话记忆‍、Prompt 模板的相关知识点。 快速跳转到你感兴趣的地方一、提示词工程(Prompt)1. 基本概…

对抗攻击-知识点

文章目录自然图像往往靠近机器学习分类器学习到的决策边界(decision boundaries)。正交方向--改变某一个不影响其它的特征降采样(Feature Downsampling)通过黑盒攻击的持续挑战,我们才能构建真正安全可靠的智能系统DCT…

7.26 作业

一、实验要求及其拓扑图: 本次实验拓扑图: 二、实验IP地址划分: 1. 公网地址(R5 作为 ISP,使用公网地址): R1 与 R5 之间接口:15.1.1.0/24,R1 侧为 15.1.1…