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
英文地址,請注明出處:http://en.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…