亲测有效!关键点检测——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://xiahunao.cn/news/3030839.html

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

相关文章

C++ Primer Plus第二章复习题

1、C的程序模块叫什么&#xff1f; 答&#xff1a;函数。 2、下面的预处理器编译指令是做什么用的&#xff1f; #include <iostream> 答&#xff1a;将iostream加入到源代码中&#xff0c;在最终的编译之前&#xff0c;使用iostream文件的内存替换该编译指令。 3、下…

MySQL变量的四则运算以及取模运算

1、定义多个变量在一条语句中&#xff0c;需要使用,作为分隔符 除法默认保留4位有效数字 2、浮点数运算&#xff1a; 除法默认保留4位有效数字

内存拆解分析表:学习版[图片]

对拆解system中主要是对比测试机和对比机之间的差距&#xff0c;测试机那些地方高于对比机 拆解表&#xff0c;作为理解 在拆解表中system测试机比对比机多出113M 这说明是有问题的 对system拆解&#xff1a; system12345对比机9102294380941069391081628测试机10252010331…

uni-appH5Android混合开发二 || 使用Android Studio打包应用APK

前言&#xff1a; 在上一章节我们已经讲了如何uni-app离线打包Android平台教程&#xff0c;这一章就该来讲讲如何使用Android Studio打包应用APK提供给Android手机安装使用了。 uni-app跨平台框架介绍和快速入门 uni-app跨平台框架介绍和快速入门 第一步、首先打开已经编译好的…

【Spring】Spring 整合 Junit、MyBatis

一、 Spring 整合 Junit <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

世上最全前端开发教程(HTMLCSS)

HTML介绍 HTML&#xff0c;全称为HyperText Markup Language&#xff0c;即超文本标记语言&#xff0c;是一种用来创建网页的标准标记语言。HTML使用一系列的标签&#xff08;Tags&#xff09;来定义网页的不同部分和它们的行为&#xff0c;比如段落、链接、图片等。 CSS介绍 …

Docker + Django跨域解决方案

什么是Django Django 是一个开源的高级 Python Web 框架&#xff0c;它鼓励快速开发并遵循可重用和可维护的实践。Django 是在 MTV&#xff08;模型-模板-视图&#xff09;模式的基础上设计的&#xff0c;这个模式类似于但不同于 MVC&#xff08;模型-视图-控制器&#xff09;模…

使用 MSYS2 Qt6 发布绿色版的SDR软件无线电应用

文章目录 概要整体架构流程技术名词解释技术细节在启动器中为子进程设置路径和环境。如何迅速找齐所有的DLL 小结附件 概要 新接触软件定义无线电&#xff08;SDR&#xff09;的朋友一般都会一股脑的安装一些现有的SDR平台。无论是GNURadio还是SDR、SDRSharp、SDRAngel&#x…

【WPF学习笔记(一)】WPF应用程序的组成及Window类介绍

WPF应用程序的组成及Window类介绍 WPF应用程序的组成及Window类介绍前言正文1、WPF介绍1.1 什么是WPF1.2 WPF的特点1.3 WPF的控件分类 2、XAML介绍2.1 XAML的定义2.2 XAML的特点2.3 XAML的命名空间 3、WPF应用程序组成3.1 App.config3.2 App.xaml3.3 App.xaml.cs3.4 MainWindow…

【配置】IT-Tools部署

github地址 docker运行如下&#xff0c;记得打卡端口 docker run -d --name it-tools --restart unless-stopped -p 9090:80 corentinth/it-tools:latestip:9090查看&#xff0c;很香大部分工具都有

【C++】CentOS环境搭建-安装CATCH2

【C】CentOS环境搭建-安装CATCH2 1.克隆Catch2仓库2. 进入Catch2目录3. 创建一个构建目录4. 使用CMake生成构建系统&#xff08;以及可能的编译&#xff09;5.安装Catch2&#xff08;可选&#xff0c;根据你的需求&#xff09; 1.克隆Catch2仓库 git clone https://github.com…

Secnet-智能路由系统 actpt_5g.data 信息泄露漏洞复现

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司&#xff08;简称“安网通信”&#xff09;的无线AP管理系统。 0x02 漏洞概述 Secnet-智能路由系统 actpt_5g.data 接口存在信息泄露漏洞&#xff0c;未经身份验证的远程攻击者可以利用此漏洞获取系统账户…

【Java难点】多线程-高级

悲观锁和乐观锁 悲观锁 synchronized关键字和Lock的实现类都是悲观锁。 它很悲观&#xff0c;认为自己在使用数据的时候一定有别的线程来修改数据&#xff0c;因此在获取数据的时候会一不做二不休的先加锁&#xff0c;确保数据不会被别的线程修改。 适合写操作多的场景&…

sipeed 的 MaixCam UART操作

发现问题 根据sipeed MaixCam官方文档 使用MaixVision会报错。 正确的接线 1&#xff0c;usb转ttl的RX和TX与sipeed MaixCam官方赠送的usb转接头反向连接&#xff0c;GND互相连接。 2&#xff0c;再用一根tpyc-c为其供电。 连接WiFi路由器 MaixCam液晶屏输入WiFi名称和密…

【Nginx】如何在 Nginx 中阻止来自特定国家的 IP 地址访问

文章目录 前言一、准备工作二、查看 Nginx 服务器都拥有哪些模块2.1 先查看本地nginx是否有ngx_http_geoip2模块2.2 安装nginx并配置ngx_http_geoip2模块2.2.1下载所需版本的nginx到服务器2.2.2 先安装所需依赖2.2.3 解压文件2.2.4 下载ngx_http_geoip2模块2.2.5 编译安装nginx…

视频批量剪辑指南:一键合并视频并添加背景音乐,高效便捷

在数字化时代&#xff0c;视频剪辑已经成为了一项常见且重要的技能。无论是制作家庭影片、工作展示还是社交媒体内容&#xff0c;掌握高效的视频剪辑技巧都能极大地提升我们的工作效率和创作质量。本文将为您介绍云炫AI智剪中高效的视频批量剪辑方法&#xff0c;让您能够一键合…

(Java)心得:LeetCode——15.三数之和

一、原题 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。…

Java集合框架之LinkedHashSet详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

QX---mini51单片机学习---(6)独立键盘

目录 1键盘简绍 2按键的工作原理 3键盘类型 4独立键盘与矩阵键盘的特点 5本节相关原理图 6按键特性 7实践 1键盘简绍 2按键的工作原理 内部使用轻触按键&#xff0c;常态按下按键触点才闭合 3键盘类型 编码键盘与非编码键盘 4独立键盘与矩阵键盘的特点 5本节相关原理…

Python框架Django入门教程

Django 是一个使用 Python 编程语言开发的、免费且开源的 Web 应用框架。它遵循 "DRY&#xff08;Dont Repeat Yourself&#xff09;" 原则&#xff0c;旨在简化创建功能丰富的、高效率的 Web 网站。Django 提供了模型-视图-控制器&#xff08;MVC&#xff09;架构的…