首页 > 其他分享 >yolov5-fastapi-demo更换中文标签

yolov5-fastapi-demo更换中文标签

时间:2023-09-10 19:31:28浏览次数:59  
标签:yolov5 PIL demo cv2 label 标签 fastapi font size


 本章是基于yolov5-fastapi-demo项目的更改

WelkinU/yolov5-fastapi-demo: FastAPI Wrapper of YOLOv5 (github.com)

首先,因为训练的时候设置的标签是英文,换成中文要重新训练,而且使用中文训练也很繁琐要改很多东西,因此可以直接训练的时候用英文标签,然后在识别绘图的时候做一个判断直接把标签替换了。如下

if bbox["class_name"] =="旧的英文名":

       bbox["class_name"] ="新的中文名"

在server.py的plot_one_box中label就是传进来的标签

yolov5-fastapi-demo更换中文标签_github

然后换成中文标签之后,发现变成乱码????

原来是OpenCV不支持中文,那我们换成draw.text来绘制

先去下载字体包msyh

msyh.ttc字体下载-msyh.ttc下载win10压缩版-绿色资源网 (downcc.com)

直接丢到根目录下

yolov5-fastapi-demo更换中文标签_github_02

 然后导包

from PIL import ImageFont, ImageDraw, Image

yolov5-fastapi-demo更换中文标签_github_03

 修改plot_one_box 的if label: 之下的内容

yolov5-fastapi-demo更换中文标签_github_04

if label:
        tf = max(tl - 1, 1)  # font thickness
        t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
        font_size = t_size[1]
        font = ImageFont.truetype('msyh.ttc', font_size)
        t_size = font.getsize(label)
        c2 = c1[0] + t_size[0], c1[1] - t_size[1]
        cv2.rectangle(im, c1, c2, color, -1, cv2.LINE_AA)  # filled
        img_PIL = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
        draw = ImageDraw.Draw(img_PIL)
        draw.text((c1[0], c2[1] - 2), label, fill=(255, 255, 255), font=font)
        cv2.cvtColor(np.array(img_PIL), cv2.COLOR_RGB2BGR) 
        return cv2.cvtColor(np.array(img_PIL), cv2.COLOR_RGB2BGR)

此时标签已经成功替换成中文了 



标签:yolov5,PIL,demo,cv2,label,标签,fastapi,font,size
From: https://blog.51cto.com/u_16179624/7427780

相关文章

  • Vue框架demo
    首先,需要安装Vue:npminstallvue然后,创建一个名为App.vue的文件,用于定义应用程序的主要内容。<template><div><h1>{{message}}</h1><inputtype="text"v-model="inputText"/><button@click="addMessage">AddM......
  • 华脉智联发布国标28181 Android SDK和DEMO
    在目前很多行业项目中,客户使用的是海康、大华等监控平台的GB/28181平台,或者是其他的第三方的GB/28181平台。但是对于那些不具备GB/28181协议的单兵终端,如何接入GB/28181平台网络中呢?首先,我们了解下GB/T28181:国标GB/T28181协议全称《安全防范视频监控联网系统信息传输、交换、控制技......
  • Vue项目中处理key=value格式的数据-demo
    要从qrCode字符串中获取expiredAt的值,你可以使用JavaScript的字符串操作方法。以下是一个示例,展示如何提取expiredAt的值:constqrCode='expiredAt=1693821037721&token=c214de74cf5847239da3005c9465025e';constparams=newURLSearchParams(qrCode);constexpiredAt=param......
  • mupdf实用操作demo,C++操作PDF文件
    前文:最近有个项目,需要读写PDF,本来想着挺简单的,读写PDF有那么多的库可以使用,唰唰的就完成了。忘记了我写C++的,还是在国产系统上开发的。所以一般的东西还不好使,因为项目需要在多个架构的电脑上使用,所以必须要开源,还要支持读写才行。 找了很多个PDF库(libharu、mupdf、pdfium、......
  • 导入Demo工程
            ......
  • 导入Demo数据
              ......
  • 在线问诊 Python、FastAPI、Neo4j — 创建节点
    目录前提条件创建节点Demo准备数据在线问诊Python、FastAPI、Neo4j—创建节点Neo4j节点的标签可以理解为Java中的实体。根据常规流程:首先有什么症状,做哪些对应的检查,根据检查诊断什么疾病,需要用什么药物治疗,服药期间要注意哪些饮食,需要做哪些运行在线问诊大概创建:症状......
  • Python 框架(Flask,tornado,fastAPI)Go 的gin框架 Java spring 框架中的性能对比
    使用jmeter进行压测:配置如下: Flask框架:Python代码:fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'Hello,World!'if__name__=='__main__':app.run(port=8080)测试结果: Tornado......
  • 超全60000多字详解 14 种设计模式 (多图+代码+总结+Demo)
    超全60000多字详解14种设计模式(多图+代码+总结+Demo)之前读耗子叔文章时,看到过有句话没有实践,再多的理论都是扯淡,个人很赞同。你觉得自己学会了,但实践与学会之间有着很大差别。单例模式(SingletonPattern)定义或概念单例模式:保证一个类仅有一个实例,并提供一个访问的全局访......
  • Python FastAPI 异步获取 Neo4j 数据
    前提条件先往Neo4j里,准备数据参考:https://www.cnblogs.com/vipsoft/p/17631347.html#创建传承人搭建FastAPI项目:https://www.cnblogs.com/vipsoft/p/17684079.html改造utils/neo4j_provider.py增加了暴露给外面调用的属性,同时提供了同步和异步执行的驱动#!/usr/bin/py......