单字符检测模型charnet使用方法,极简

Git链接

安装按照上面的说明,说下使用。

把tools下面的test做了一点修改,可以读取一张图片,把里面的单个字符都检测和识别出来。

然后绘制到屏幕上。

import torch
from charnet.modeling.model import CharNet
import cv2, os
import numpy as np
import argparse
from charnet.config import cfgdef loadDict():fn_dict="tools\char_dict.txt"with open(fn_dict, 'r') as file:lines = file.readlines()# 去除每行末尾的换行符lines = [line.strip() for line in lines]dict_char={}for line in lines:line=line.replace("\x1f","")num_line=len(line)a=line[0]index=line[1:]index=int(index)dict_char[index]=areturn dict_chardef resize(im, size):h, w, _ = im.shapescale = max(h, w) / float(size)image_resize_height = int(round(h / scale / cfg.SIZE_DIVISIBILITY) * cfg.SIZE_DIVISIBILITY)image_resize_width = int(round(w / scale / cfg.SIZE_DIVISIBILITY) * cfg.SIZE_DIVISIBILITY)scale_h = float(h) / image_resize_heightscale_w = float(w) / image_resize_widthim = cv2.resize(im, (image_resize_width, image_resize_height), interpolation=cv2.INTER_LINEAR)return im, scale_w, scale_h, w, hif __name__ == '__main__':dict_char=loadDict()parser = argparse.ArgumentParser(description="Test")fn_conf=r"configs\icdar2015_hourglass88.yaml"fn_weight=r"configs\icdar2015_hourglass88.pth"args = parser.parse_args()cfg.merge_from_file(fn_conf)cfg.freeze()charnet = CharNet()charnet.load_state_dict(torch.load(fn_weight))charnet.eval()charnet.cuda()im_file=r"data\2.jpg"im_original = cv2.imread(im_file)im, scale_w, scale_h, original_w, original_h = resize(im_original, size=cfg.INPUT_SIZE)with torch.no_grad():char_bboxes, char_scores, word_instances = charnet(im, scale_w, scale_h, original_w, original_h)for ic,box in enumerate(char_bboxes):print(box)score=char_scores[ic]max_index = np.argmax(score)label=dict_char[max_index]points = np.array(box[0:8]).reshape(-1, 2).astype(np.int32)cv2.polylines(im_original, [points], isClosed=True, color=(0, 0, 255), thickness=1)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(im_original, label, (points[0][0],points[0][1]), font, 1, (0, 255, 0), 1)cv2.imshow("img",im_original)cv2.waitKey(0)

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

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

相关文章

群晖Synology Office如何多人同时远程编辑同个文件

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

像美团一样商家入驻的小程序功能

美团一样的商家入驻小程序可以促进本地化商家的线上线下融合,为本地商家和用户提供更好的服务和体验,是一种数字化转型和创新,想要开发像美团一样的商家入驻小程序,需要具备以下功能: 1、不同行业独立频道 为本地化的…

任务和内存的栈

任务是什么? 任务是可以运行着的函数,本身并不是函数,因为任务是可以创建、删除、切换等操作的。 void add_val(int *pa, int *pb) {volatile int tmp;tmp *pa;*pa tmp *pb; }void TaskFunction(void *param) {int a 1;int b 2;add_va…

day27 回溯(03)

day27 代码随想录 2023.12.25 1. 39组合总和 这道题还是组合问题,一样的代码套路,不过就是递归参数不同,数组元素可以重复,所以是i而不是i1;其次就是终止条件,当temp的sum大于target则终止,当等…

gitlab请求合并分支

直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口: 仓库控制台的这两个地方都…

Android集成OpenSSL实现加解密-编译

下载 OpenSSL 源码: 前往 OpenSSL 官方网站(https://www.openssl.org/source/)下载最新的源码压缩包并解压,示例在WSL环境编译 下载NDK 前往https://developer.android.google.cn/ndk/downloads?hlzh-cn下载NDK版本并解压 配置…

26、商城系统(八):nexus配置,拆分springcloud为多个springboot,并且实现多个springboot通过feign调用接口

目录 一、如果你是技术部经理 二、nexus:maven仓库的创建以及上传拉取jar包 1.docker安装nexus

OCP NVME SSD规范解读-3.NVMe管理命令-part1

4.4 NVMe Admin Command Set章节详细介绍了设备应支持的NVMe管理命令集,包括必需的和可选的命令。以下是一些关键要求和描述: NVMe-AD-2:识别命令除了支持所有必需的CNS值和相关的必需字段外,还应支持以下可选字段: 格…

电子设计从零开始(2)-----走进电子技术之电阻器

同学们大家好,今天我们继续学习杨欣的《电子设计从零开始》,这本书从基本原理出发,知识点遍及无线电通讯、仪器设计、三极管电路、集成电路、传感器、数字电路基础、单片机及应用实例,可以说是全面系统地介绍了电子设计所需的知识…

JavaScript----循环语句

1. 循环语句的介绍 循环语句就是让一部分代码重复执行&#xff0c;javascript中常用的循环语句有: forwhiledo-while 2. for循环 var array [1, 4, 5];for(var index 0; index < array.length; index){result array[index];alert(result); }3. while循环 var array …

软件测试/测试开发丨接口测试学习笔记分享

一、Mock 测试 1、Mock 测试的场景 前后端数据交互第三方系统数据交互硬件设备解耦 2、Mock 测试的价值与意义 不依赖第三方数据节省工作量节省联调 3、Mock 核心要素 匹配规则&#xff1a;mock的接口&#xff0c;改哪些接口&#xff0c;接口哪里的数据模拟响应 4、mock实…

OpenAI 2024年展望:Sam Altman愿望清单的深度解析

引言 Sam Altman 2023年11月22日 重回OpenAI 任CEO。 Sam Altman 2023年12月24日 发布新年需求统计。 OpenAI是一个美国人工智能研究实验室&#xff0c;由非营利组织OpenAI Inc&#xff0c;和其营利组织子公司OpenAI LP所组成。OpenAI 进行 AI 研究的目的是促进和发展友好的人…

听GPT 讲Rust源代码--src/tools(30)

File: rust/src/tools/clippy/clippy_lints/src/casts/cast_slice_from_raw_parts.rs 在Rust源代码中&#xff0c;cast_slice_from_raw_parts.rs文件位于rust/src/tools/clippy/clippy_lints/src/casts/目录下&#xff0c;它是Clippy工具中的一个lint&#xff0c;用于检查通过f…

centos7安装nginx并安装部署前端

目录&#xff1a; 一、安装nginx第一种方式&#xff08;外网&#xff09;第二种方式&#xff08;内网&#xff09; 二、配置前端项目三、Nginx相关命令 好久不用再次使用生疏&#xff0c;这次记录一下 一、安装nginx 第一种方式&#xff08;外网&#xff09; 1、下载nginx ng…

《深入理解Java虚拟机(第三版)》读书笔记:Java内存区域与内存溢出异常、垃圾收集器与内存分配策略

下文是阅读《深入理解Java虚拟机&#xff08;第3版&#xff09;》这本书的读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 第2章 Java内存区域与内存溢出异常2.2 运行时数据区域2.3 HotSpot虚拟机对象探秘 第3章 垃圾收集器与内存分配策略3.2 对象已死&…

1.2.3 TCP/IP参考模型

一、OSI参考模型与TCP/IP参考模型 1、应用层&#xff1a;将表示层和会话层都纳入其中&#xff0c;形成一个比较大的层次&#xff0c;包含所有的高层协议 2、传输层&#xff1a;实现端到端的&#xff0c;进程与进程之间的通信。 3、网际层&#xff1a;TCP/IOP模型中最关键的部…

【Unity动画系统】Unity动画系统Animation详解,参数细节你是否弄清?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

STM32 学习(一)新建工程

本课程使用的stm32型号 引脚定义&#xff0c;有FT能接5v&#xff0c;没有FT能接3.3v 启动配置 第二种启动模式中&#xff0c;系统存储器中存放了一部分Bootloader程序&#xff0c;该程序可以接收串口的数据&#xff0c;然后刷新到主闪存中&#xff0c;这样就可以使用串口下载程…

Unity简单的敌人巡逻方法(NavMeshAgent)

简单的敌人巡逻方法 基于NavMeshAgent的敌人巡逻方法。 private NavMeshAgent eagent;//定义一个寻路private Animator animator;//声明一个动画public Vector3 [] point;//巡逻范围和位置数量private int index;//数组位置private float timer 0 ;void Start(){animator Ge…

c语言-位操作符练习题

文章目录 前言一、n&(n-1)的运用场景(n为整数)二、&1 和 >>的应用场景总结 前言 本篇文章介绍利用c语言的位操作符解决一些练习题&#xff0c;目的是掌握各个位操作符的使用和应用场景。 表1.1为c语言中的位操作符 操作符含义&按位与|按位或^按位异或~按位…