Windows下PaddleOCR用NCNN部署

news2024/11/15 10:58:12

1.所用到的ncnn格式的模型文件

 要问这些模型哪里来的,请看下面提示信息:

 2.查看字典函数读取方法

char* readKeysFromAssets()
{

	std::ifstream ifs("./model/paddleocr_keys.txt");
	if (!ifs.is_open())
	{
		return 0;
	}

	ifs.seekg(0, std::ios_base::end);
	int length = ifs.tellg();
	ifs.seekg(std::ios_base::beg);
	char* buff = new char[length + 1]();
	ifs.read(buff, length + 1);

	return buff;
}

这个paddleocr_keys.txt 的字符编码格式是可以修改,改为ANSI 格式,这样在cmd行中就不会中文乱码

 3.模型加载函数,分为检测模型和识别模型

int ret = dbNet.load_param("./model/pdocrv2.0_det-op.param");
		if (ret != 0)
		{
			return false;
		}
		ret = crnnNet.load_param("./model/pdocrv2.0_rec-op.param");
		if (ret != 0)
		{
			return false;
		}
	}
	// init bin
	{
		int ret = dbNet.load_model("./model/pdocrv2.0_det-op.bin");
		if (ret != 0)
		{
			return false;
		}
		ret = crnnNet.load_model("./model/pdocrv2.0_rec-op.bin");
		if (ret != 0)
		{
			return false;
		}
	}

4.模型推理主要函数

void PaddleOCRNcnn_Detect(bool use_gpu, cv::Mat& rgb)
{

	std::vector<TextBox> objects;
	objects = getTextBoxes(rgb, 0.4, 0.3, 2.0);

	std::vector<cv::Mat> partImages = getPartImages(rgb, objects);
	std::vector<TextLine> textLines = getTextLines(partImages);

	if (textLines.size() > 0)
	{
		for (int i = 0; i < textLines.size(); i++)
			objects[i].text = textLines[i].text;
	}

	if (objects.size() > 0)
	{
		for (size_t i = 0; i < objects.size(); i++)
		{

			float x0 = objects[i].boxPoint[0].x;
			float y0 = objects[i].boxPoint[0].y;
			float x1 = objects[i].boxPoint[1].x;
			float y1 = objects[i].boxPoint[1].y;
			float x2 = objects[i].boxPoint[2].x;
			float y2 = objects[i].boxPoint[2].y;
			float x3 = objects[i].boxPoint[3].x;
			float y3 = objects[i].boxPoint[3].y;

			cv::line(rgb, cv::Point(x0, y0), cv::Point(x1, y1), cv::Scalar(0, 0, 255), 2, 8);
			cv::line(rgb, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(0, 0, 255), 2, 8);
			cv::line(rgb, cv::Point(x2, y2), cv::Point(x3, y3), cv::Scalar(0, 0, 255), 2, 8);
			cv::line(rgb, cv::Point(x3, y3), cv::Point(x0, y0), cv::Scalar(0, 0, 255), 2, 8);

			cv::putTextZH(
				rgb,
				textLines[i].text.c_str(),
				cv::Point(x1, y1),
				CV_RGB(255, 255, 255),
				20
			);
		}
	}
}

5.OCR识别推理的结果

 我只是个代码搬运工,需要下载代码的地址。

https://download.csdn.net/download/huzhifei/88016666

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

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

相关文章

[桌面运维]PC常用的视频接口,显示器VGA、DVI、HDMI、DP、USB-C接口的认识和应用

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…

keepalived

文章目录 一、suse系统安装keepalived1.1、准备环境1.2、修改主机名1.3、关闭防火墙1.4、配置网络1.5、配置 yum 源1.6、安装 mysql1.7、安装 keepalived报错信息&#xff1a;使用 wget 下载keepalived 报错解决 使用 wget 下载 keepalived的报错 一、suse系统安装keepalived …

详解c++---位图模拟实现

目录标题 为什么会有位图一道题了解位图模拟实现位图setresettest构造函数 代码测试关于位图的几道题第一题第二题 第三题 为什么会有位图 通过前面的学习想必大家应该已经了解了哈希表的原理&#xff0c;我们使用两种不同的方法来模拟实现哈希表&#xff0c;第一种方法就是闭…

加拿大访问学者签证如何提升通过率?

加拿大访问学者是许多学者向往的机会&#xff0c;而提高签证通过率则需要注意一些关键因素。下面是知识人网小编整理的一些建议&#xff0c;希望能对您有所帮助。 首先&#xff0c;准备充分的材料是至关重要的。确保您提供了完整、准确的申请材料&#xff0c;包括学历证明、工作…

vue confirm弹窗去掉取消和右上角关闭按钮

this.confirm弹窗去除取消, 右上角x按钮 1.弹窗是显示 使用的是this.confirm弹窗, 去掉右上角的x和取消按钮, 也不能点击空白处关闭 2.修改代码 this.$confirm(this.$t(login.udpatePwdSuccess), this.$t(common.tip), {confirmButtonText: this.$t(button.confirm),showCance…

量化风控算法详解之CatBoost

CatBoost是俄罗斯的搜索巨头Yandex在2017年开源的机器学习库&#xff0c;与XGBoost、LightGBM并称为GBDT三大主流神器库。LightGBM和XGBoost已经在各领域得到了广泛的应用&#xff0c;而Yandex的CatBoost作为后起之秀则是号称比XGBoost和LightGBM在算法准确率等方面表现更为优秀…

【Hello mysql】 mysql数据类型

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的数据类型 mysql数据类型 数据类型分类数值类型tinyint类型越界测试bit类型小数类型float类型decimal类型 字符串类型charvarchar 时间和日期类型enum和setenunmset 总结 数据类型分类 为什么要存在数据类型呢&a…

办公难题轻松解决!快速实现文件夹多次复制,轻松节省办公时间

在日常办公中&#xff0c;我们经常遇到需要多次复制文件夹的情况&#xff0c;而繁琐的操作常常令人头疼。但现在&#xff0c;我们为您提供了一款简单易用且高效的解决方案&#xff0c;让您轻松应对复制文件夹的难题&#xff0c;节省宝贵的办公时间&#xff01; 首先我们要进入…

Flask框架之RESTful--参数验证--add_argument方法参数详解

目录 参数验证 参数验证的重要性 Flask-RESTful 参数验证方法 基本用法 1. 使用 reqparse 模块 示例 代码详解 2. 使用 marshmallow 库 示例 代码详解 add_argument方法参数详解 名词解释 代码案例 参数验证 参数验证也叫参数解析 Flask-Restful插件提供了类似W…

Win10任务栏 图标居中

参考&#xff1a;图标居中 1.右键任务栏&#xff0c;将锁定任务栏取消。 2.右键选择工具栏,然后选择新建工具栏。 3.选择一个空的文件夹。 4.将开始菜单旁边的两条线拖到新建工具栏的后面。 5.将图标拉到中间。 6.在新建工具栏的标题上右键&#xff0c;将显示标题取消选择…

cmake流程控制---cmake数学计算操作和if命令

目录 cmake 数学计算操作 demo if命令 基本表达式 逻辑表达式(NOT AND OR) 比较表达式 正则表达式 demo 文件系统相关 判断是否存在的表达式 cmake 数学计算操作 有时候我们需要对cmake变量之间进行数学运算,这时候cmake提供了math()这个命令,命令格式如下: math(…

黑苹果网络经常掉线/无线网卡无法驱动解决办法(itlwm)

适用问题 黑苹果3-5分钟掉一次网&#xff0c;网卡无法驱动(右上角WLAN图标变灰有斜杠) 作者环境 作者笔记本因为Intel网卡太旧且系统支持不稳定&#xff0c;所以经常掉网 在Github上有一款驱动(Airport)itlwm&#xff0c;经OC注入后网络状态稳定 安装方法(OC) 下载 建议在…

阿里云服务器扩容记录

先在控制台选择云盘扩容&#xff0c;然后才能在服务器操作&#xff1a; blkidlsblk -n df -Thapt-get updatetype growpart || apt-get install -y cloud-guest-utilstype sgdisk || apt-get install -y gdiskLC_ALLen_US.UTF-8 growpart /dev/vda 3 resize2fs /dev/vda3

Element+Vue+OpenLayers的项目实战

WebGIS ElementVueOpenLayers的项目实战 使用npm配置开发环境Vue的安装npm安装vue-cli脚手架构建工具安装桥接工具运行项目 使用npm配置开发环境 开发是项目级别的&#xff0c;则需要使用npm来配置开发环境&#xff1b; 使用npm配置开发环境主要包括Vue、Element和OpenLayers的…

PyQt如何查找帮助信息(不会写组件的代码,快看过来!)

1.可以在PyQt6官网中查找信息kReference Guide — PyQt Documentation v6.5.1 看不懂没有关系啦&#xff0c;可以使用网页翻译哒~ 找到或者直接搜索QLabel&#xff0c;寻找对应函数即可 2. https://zetcode.com/pyqt6/ 3.Qt Creator中寻找 例如&#xff0c;输入setText 就可以…

BC 汇率读取问题

今天发现一个奇怪的问题&#xff0c;读去汇率&#xff0c;A账户汇率正常读取&#xff0c;B账户能读取到记录&#xff0c;并且ABAP判断不是初始&#xff0c;但是里面的实际数据都是0 。发现是权限的问题 sm30 经过测试 是以上的权限对象的问题 解决思路 权限对象配起来

如何通过浏览器配置哪些网页不走代理服务器,Lantern开启后部分网页打不开了

浏览器点设置 > 搜索“代理” > “打开计算机的代理设置” > 编辑“使用代理服务器” 搜索“代理” > “打开计算机的代理设置” > 编辑“使用代理服务器”&#xff0c;将不用代理的url链接域名写进来&#xff0c;点击保存。然后刷新打不开的网页&#xff0c;…

Elasticsearch + Kibana+Docker实现词云

需求 实现文件导入es&#xff0c;支持格式TXT、DOC、PPT、XLS、PDF、图片ik分词器远程热更新自定义扩展字典和停用字典Kibana配置词云&#xff0c;并显示对应文档详情和字典频次&#xff0c;且自定义显示字典 技术点 文件导入&#xff1a;es插件ingest-attachment图片文字识…

QT day1简单登录界面

widget.cpp文件代码&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {qDebug()<<this->size();qDebug()<<this->frameSize();this->setFixedSize(50…

Element Plus el-table 自定义合并行和列

原文链接&#xff1a;Element Plus el-table 自定义合并行和列 前言 目标效果是将表格行数据中某个属性值相同的项合并到一起&#xff0c;效果如下&#xff1a; <el-table :data"tableData" :span-method"spanMethod" style"width: 100%">…