亲测有效!关键点检测——COCO格式转YOLO格式代码!!!

话不多收,直接上代码,这个我也是找了好久的,分享不易,给个鼓励!(记得点赞收藏)

大家可以直接使用此代码转换你自己的数据集,路径换成你自己的就行了,注意路径格式!

1、我们的关键点数据集是coco格式的,也就是要把json文件转成txt格式的,代码如下

import os
import json# 将目标检测框的信息转为yolo格式
def cc2yolo_bbox(img_width, img_height, bbox):dw = 1. / img_widthdh = 1. / img_heightx = bbox[0] + bbox[2] / 2.0y = bbox[1] + bbox[3] / 2.0w = bbox[2]h = bbox[3]x = format(x * dw, '.5f')w = format(w * dw, '.5f')y = format(y * dh, '.5f')h = format(h * dh, '.5f')return (x, y, w, h)# 将关键点keypoints的信息转为yolo格式
def cc2yolo_keypoints(img_width, img_height, keypoints):list = []dw = 1. / img_widthdh = 1. / img_heightkeypoint_num = len(keypoints)for i in range(keypoint_num):if i % 3 == 0:list.append(format(keypoints[i] * dw, '.5f'))if i % 3 == 1:list.append(format(keypoints[i] * dh, '.5f'))if i % 3 == 2:list.append(keypoints[i])result = tuple(list)return resultjson_file_path = r'E:\AI\pose\person_keypoints_val2017.json'
data = json.load(open(json_file_path, 'r'))
yolo_anno_path = r'E:\AI\pose\txt\/'
if not os.path.exists(yolo_anno_path):os.makedirs(yolo_anno_path)cate_id_map = {}
num = 0
for cate in data['categories']:cate_id_map[cate['id']] = numnum += 1success_count = 0  # 初始化成功转换的计数器for img in data['images']:filename = img['file_name']img_width = img['width']img_height = img['height']img_id = img['id']yolo_txt_name = filename.split('.')[0] + '.txt'with open(yolo_anno_path + yolo_txt_name, 'w') as f:for anno in data['annotations']:if anno['image_id'] == img_id:f.write(str(cate_id_map[anno['category_id']]) + ' ')bbox_info = cc2yolo_bbox(img_width, img_height, anno['bbox'])keypoints_info = cc2yolo_keypoints(img_width, img_height, anno['keypoints'])for item in bbox_info:f.write(item + ' ')for item in keypoints_info:f.write(str(item) + ' ')f.write('\n')# 打印转换成功的提示,并增加计数器print(f'成功转换: {filename}')success_count += 1  # 增加成功转换的计数# 打印总共成功转换的文件数量
print(f'总共成功转换了 {success_count} 个文件')

2、结果成功!

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

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

相关文章

【https】怎么免费实现https!

一、简介 实现 HTTPS(Hyper Text Transfer Protocol Secure)通常需要购买和配置 SSL/TLS 证书,这是确保网站或应用程序安全传输数据的关键步骤。然而,有一些方法可以在某些情况下“免费”地实现 HTTPS,但这通常涉及到…

React - Input框绑定动态State和监听onChange事件,输入时失去焦点

React - Input框绑定动态State和监听onChange事件,输入时失去焦点 一. 案例复现二. 解决方案 一. 案例复现 案例代码如下: import React, { useState } from react; import { Table, Input } from antd; const Column Table.Column; const mockData …

linux打包流程

因为linux有俩个python版本,我们需要切换到python3这个版本,默认是python 2.7 alias pythonpython3 切换到python3 再次执行:python -V 显示出python的版本了,然后查看pip的配置,我们打包里面需要的第三方需要放到pip…

C++面向对象程序设计-北京大学-郭炜【课程笔记(八)】

C面向对象程序设计-北京大学-郭炜【课程笔记(八)】 1、虚函数和多态的基本概念1.1、虚函数1.2、多态多态的表现形式一多态的表现形式二 2、多态实例:魔法门之英雄无敌2.1、**非多态的实现方法:**2.2、**多态的实现方法** 3、多态实…

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放

C#实现长方体棱锥圆柱棱柱圆锥展开折叠旋转缩放 C#实现 模型边数 长方体 棱锥 圆柱 棱柱 圆锥 实现功能 展开 折叠 颜色 边框颜色 旋转 缩放 大小 视图方向 项目获取: 项目获取:typora: typora/img (gitee.com) 备用项目获取链接1:yife…

Electron学习笔记(三)

文章目录 相关笔记笔记说明 五、界面1、获取 webContents 实例(1)通过窗口对象的 webContent 属性获取 webContent 实例:(2)获取当前激活窗口的 webContents 实例:(3)在渲染进程中获…

微信小程序原生组件使用

1、video组件使用 <view class"live-video"><video id"myVideo" src"{{videoSrc}}" bindplay"onPlay" bindfullscreenchange"fullScreenChange" controls object- fit"contain"> </video&g…

ubuntu server 22.04 安装docker、docker-compose

ubuntu server 22.04安装docker有两种方式&#xff0c;第一种是使用ubuntu镜像源的软件包进行安装&#xff0c;第二种使用官方GPG密钥手动添加Docker存储库方式进行安装&#xff0c;两种方式都可以&#xff0c;但第二种方式略复杂&#xff0c;这里介绍第一种比较简单的安装方式…

轻松玩转Python文件操作:移动、删除

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; Python文件操作基础 在处理计算机文件时&#xff0c;经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务&#xff0c;其中最常用的就是os模块和shutil模块。这两个模块包含了许多与文…

无需公网IP、无需云服务器,异地组网实现远程直连NAS、游戏联机

手机图片、视频太多&#xff0c;存储空间不够用怎么办?出门在外无法直连家中NAS&#xff0c;远程访问NAS速度慢&#xff1f;自建私有云、多媒体服务器&#xff0c;如何多人远程共享媒体资源&#xff1f;幻兽帕鲁、我的世界、泰拉瑞亚…局域网游戏&#xff0c;想远程多人联机&a…

Chromium 调试指南2024 Windows11篇-VSCode必要依赖扩展(四)

1. 前言 为了在Visual Studio Code中更加方便地进行Chromium项目的开发和调试&#xff0c;我们需要安装一些必要的依赖扩展。本文将介绍如何安装中文语言包及其他依赖扩展&#xff0c;以提升我们在Visual Studio Code中的开发效率和使用体验。 2. 安装依赖扩展 在打开的Visu…

局域网手机端远程控制手机

局域网手机端远程控制手机 随着科技的进步和智能设备的普及&#xff0c;远程控制技术在日常生活与工作中的应用越来越广泛。其中&#xff0c;局域网内的手机端远程控制手机技术&#xff0c;因其便捷性和实用性&#xff0c;受到了众多用户的关注。本文将简要介绍该技术及其应用…

在装有centOS7的虚拟机上进行MySQL的安装部署

1.MySQL数据库介绍 1.开源的&#xff0c;跨平台的&#xff0c;社区版免费 2.支持多种存储引擎 3.支持多种主从复制 MySQL版本&#xff1a;5.6 5.7 8.0 https://www.mysql.com MySQL官网 2.安装MySQL5.7 1.配置MySQL仓库 2.安装MySQL服务端软件 3.启动MySQL服务 s…

3. 多层感知机算法和异或门的 Python 实现

前面介绍过感知机算法和一些简单的 Python 实践&#xff0c;这些都是单层实现&#xff0c;感知机还可以通过叠加层来构建多层感知机。 2. 感知机算法和简单 Python 实现-CSDN博客 1. 多层感知机介绍 单层感知机只能表示线性空间&#xff0c;多层感知机就可以表示非线性空间。…

Ubuntu20.04 设置路由器

1. 网络拓扑图 2. 查看网卡信息 ip a得出如下网卡信息&#xff0c;enp1s0和enp2s0为两个网卡名称&#xff0c;以及相关两个网卡的详细信息&#xff0c;不同设备的网卡名称可能不一样 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul…

使用python获取一下microsoft的搜索积分

主要使用的库是pyautogui PyAutoGUI接管了鼠标、键盘使用权,基本上完全照搬人的操作; 主要步骤如下: 登录edge浏览器打开搜索页面 找到搜索框的位置坐标使用pyautogui模拟点击搜索框模拟输入搜索文字模拟点击键盘enter键重复以上动作伪代码如下: import pyautogui import ti…

WM Transaction Code 仓库管理模块事务代码大全

1.1 LE-WM 仓库管理 Warehouse Management 仓库管理事务码 描述 LB01 Create Transfer Requirement 创建转储需求 LB02 Change transfer requirement 修改转储需求 LB03 Display Transfer Requirement 显示转储需求 LB10 TRs for Storage Type 按仓储类型的转储请求 …

推荐4个可用的github国内镜像

Github是全球最大的代码托管云平台&#xff0c;超过1亿用户在平台上分享代码及数据&#xff0c;深受生物信息学软件开发者的喜爱&#xff0c;并且现在发表文章&#xff0c;若涉及到代码&#xff0c;编辑还要求我们把代码及数据存放在github上&#xff0c;以便检查数据的真实性和…

frida hook java

代码例子 原函数&#xff1a; hook函数&#xff1a; if(Java.available){Java.perform(function(){var a Java.use("com.sankuai.waimai.foundation.utils.security.a");a.a.overload("java.lang.String","java.lang.String","long"…

【论文合集1】- 存内计算加速机器学习

本章节论文合集&#xff0c;存内计算已经成为继冯.诺伊曼传统架构后&#xff0c;对机器学习推理加速的有效解决方案&#xff0c;四篇论文从存内计算用于机器学习&#xff0c;模拟存内计算&#xff0c;对CNN/Transformer架构加速角度阐述存内计算。 【1】WWW: What, When, Where…