当前位置: 首页 > news >正文

数据集的简单制作和使用

数据集的简单制作和使用

参考资料:Labelme分割标注软件使用

使用labelme软件对数据集进行分割
每张图片获得一个json文件

我们看看其中一个文件,内容包含每个点在图片中的位置

我们可以自己写一个脚本(或使用别人的)将上述json转换为我们想要的json格式

JPEGImages中的内容
Visualization中的内容
JPEGImages中某张图
Visualization中某张图

我们来看看annotations.json中的具体内容
images部分包含图片的相对路径
annotations部分包含对应图片中各个物体的id、分割点坐标、bounding box坐标等

如何利用annotations.json文件从某张图片中提取出我们想要的信息?

(1)打开这个json文件

        with open(anno_json, 'r') as f:data = json.load(f)self.images = data["images"]self.annotations = data["annotations"]

(2)根据json文件中的各个字段锁定想要的信息
示例代码

# 根据下标获取图片 {...'file_name':'JPEGImages/.jpg,height:,width}
first_image = self.images[first_image_index]
# path/.../.jpg
tar_image_path = os.path.join(self.image_root, first_image["file_name"])
# [[[74,81,120],[],[]...[]]]
tar_image = cv2.imread(tar_image_path)
# images中id对应annotation中的image_id,根据 image_id 获取对应的 annotations
# 第一张图片中的第一个物体和第二个物体的分割信息[{'area':,'bbox':[..,..,..,..],'category_id':1,'id':30,'image_id':15,'segmentation:[[..,..,..]]},{同第一个}]
first_annotations = [ann for ann in self.annotations if ann["image_id"] == first_image["id"]]
# 第一张图片中第一个物体的分割信息{'area':,'bbox':[..,..,..,..],'category_id':1,'id':30,'image_id':15,'segmentation:[[..,..,..]]}
object_mask_ann = first_annotations[1]
# 获得分割点坐标 segmentation:[..,..,..]
segmentation = object_mask_ann["segmentation"][0]
# 获得bbox
target_object_bbox = object_mask_ann["bbox"]

经过处理得到自己想要的信息

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • TS中什么是泛型
  • MySQL与PostgreSQL语法区别
  • 小山菌_代码随想录算法训练营第六十二天|dijkstra(堆优化版)精讲 、Bellman_ford 算法精讲
  • 重新连接 到 时出错 Microsoft Windows Network:本地设备名已在使用中
  • Qt:线程
  • LeetCode 热题100-2
  • Unity引擎加密方案解析
  • Linux装ifort环境
  • el-select选项框样式修改
  • 【cv::triangulatePoints】其中的投射矩阵P(3x4)是怎么得到的?(内外参数K[R|t]到最终矩阵的变换过程)
  • 【ESP32】在原理图中为什么要在VCC处加几个电容
  • 写给非机器学习人员的 embedding 入门
  • 【FreeRTOS】队列实验多设备玩游戏(思路)
  • C++学习笔记----2、使用C++进行优雅编程(七)----使用常数
  • 【模电笔记】——反馈放大电路
  • .pyc 想到的一些问题
  • 【剑指offer】让抽象问题具体化
  • 【刷算法】求1+2+3+...+n
  • CentOS7 安装JDK
  • es6
  • ES6--对象的扩展
  • Git 使用集
  • HashMap剖析之内部结构
  • input实现文字超出省略号功能
  • jquery ajax学习笔记
  • Python3爬取英雄联盟英雄皮肤大图
  • Python打包系统简单入门
  • React系列之 Redux 架构模式
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 学习笔记TF060:图像语音结合,看图说话
  • 一起参Ember.js讨论、问答社区。
  • 正则表达式小结
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • postgresql行列转换函数
  • 从如何停掉 Promise 链说起
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1)虚拟机的安装与使用,linux系统安装
  • (MATLAB)第五章-矩阵运算
  • (分布式缓存)Redis分片集群
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (四)opengl函数加载和错误处理
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • . NET自动找可写目录
  • .aanva
  • .gitignore文件忽略的内容不生效问题解决
  • .NET 5种线程安全集合
  • .NET Core中如何集成RabbitMQ