labelme标注结果可视化(持续补充)

2023-11-02

        图像数据常用的标注工具是labelme,标注的格式是json。labelme标注结果可视化,是将标注结果绘制到原始图像上,以方便查看标注结果。

1 json文件读取与保存

        由于labelme标注的保存格式为json,所以必须掌握json文件的读取与保存。

import json
#json文件读取
anno= json.load(open("test.json", "r", encoding="utf-8"))
#json文件保存
with open('test.json', 'w') as f:
    json.dump(ann, f)

2 opencv中文路径读写

        opencv默认的cv2.imwrite()和cv2.imread()函数是不支持中文路径的。

import os
import cv2
from pathlib import Path

#支持中文路径读取图片
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

#支持中文路径存储图片
cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

3 矩形rectangle目标可视化

        定义线line目标可视化函数为vis_labelme_line_label。label_dir为labelme标注文件和原始图片存储目录,save_dir为可视化图片保存的文件目录。

import os
import cv2
from pathlib import Path

#支持中文路径
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

def vis_labelme_rect_label(label_dir, save_dir='res/'):
    label_dir = str(Path(label_dir)) + '/'
    save_dir  = str(Path(save_dir))  + '/'
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    label_files = glob(label_dir+'*.json')
    for label_file in label_files:
        anno= json.load(open(label_file, "r", encoding="utf-8"))
        image_path = anno['imagePath']
        image = cv_imread(label_dir+image_path)
        shapes = anno['shapes']
        for s in shapes:
            pts = np.array(s['points']).astype(np.int)
            x1  = min(pts[:, 0])
            y1  = min(pts[:, 1])
            x2  = max(pts[:, 0])
            y2  = max(pts[:, 1])
            cv2.rectangle(image, (x1, y1), (x2, y2), (255, 0, 255), 1)
        cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

4 线line目标可视化

        定义线line目标可视化函数为vis_labelme_line_label。label_dir为labelme标注文件和原始图片存储目录,save_dir为可视化图片保存的文件目录。

import os
import cv2
from pathlib import Path

#支持中文路径
def cv_imread(filePath):
    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)
    cv_img = cv2.cvtColor(cv_img, cv2.COLOR_RGB2BGR)
    return cv_img

def vis_labelme_line_label(label_dir, save_dir='res/'):
    label_dir = str(Path(label_dir)) + '/'
    save_dir  = str(Path(save_dir))  + '/'
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    label_files = glob(label_dir+'*.json')
    for label_file in label_files:
        anno= json.load(open(label_file, "r", encoding="utf-8"))
        image_path = anno['imagePath']
        image = cv_imread(label_dir+image_path)
        shapes = anno['shapes']
        for s in shapes:
            pts = s['points']
            x1, y1 = pts[0]
            x2, y2 = pts[1]
            cv2.line(image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 255), 1)
        cv2.imencode('.png', image)[1].tofile(save_dir+image_path)

【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_三维点云深度学习

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

labelme标注结果可视化(持续补充) 的相关文章

随机推荐

  • 高频卡S50和S70标签存储结构了解

    一 存储容量不同 Mifare S70的容量是S50的4倍 S50的容量是1K字节 S70的容量为4K字节 二 应答方式不同 二者应答读写器返回的卡类型 ATQA 字节不同 Mifare S50的卡类型 ATQA 是0004H Mifare
  • 快速创建一个servlet并且在web.xml配置和使用它

    这次 我要来教大家怎么快速创建一个servlet并且在web xml配置和使用它 实际上 现在可以直接在eclipse中创建一个servlet使其继承HttpServlet 而且你还可以对其进行一定的配置 在图中红色的地方写上你的Servl
  • Raneto中文搜索支持

    背景 因业务部门需要在线软件使用说明文档 但我们资源不足 故我想找一个开源的知识库 发现 Raneto不错 决定使用 官方文档相当清晰 部署完成 发布一些文章 启动项目 交由业务同事测试使用 于是我收到 中文搜索 不支持反馈 查看其配置文件
  • RocketMQ、RabbitMQ、Kafka区别

    一 编程语言 RocketMQ是java编写 Kafka采用scala RabbitMQ采用Erlang 二 数据权限安全 Kafka0 9 RocketMQ4 2以后 已经和RabbitMQ对齐 都有topic级别的控制权限 三 架构和高
  • 机器学习绪论(3)

    归纳偏好 机器学习算法在学习过程中对某种类型假设的偏好 归纳偏好对应了算法本身所做出的关于 什么样的模型更好 的假设 有效的机器学习算法必然有归纳偏好 否则无法产生确定的学习结果 比如对于下图 三个假设对于同一个新样本 会产生不同的结果 对
  • 微信小程序CryptoJS解析java DES/CBC/PKCS5Padding

    文章目录 目标 js解析库下载地址 解决代码 java后台端代码 小程序 CryptoJS 注意 详细步骤解决 小程序解决 为什么添加上面的代码就可以解密 拓展 参考 目标 java端采用DES CBC PKCS5Padding 加密 前端
  • IT项目管理-项目时间管理

    IT项目管理 项目时间管理 题目 教材练习题6 教材练习题7 解答 教材练习题6 a
  • CCS安装编译器的方法

    TI公司的编译器叫CGT code generation tools 先下载所需版本的CGT 到TI官网找CGT 在www ti com cn上搜索CGT 即可找到C2000 CGT C2000代码生成工具 编译器 也可以直接到这里找 C2
  • 新浪微博发图片时报错

    error does multipart has image error code 20007 2 statuses upload json JAVA 新浪微博 官网sdk 在调用 public Status UploadStatus St
  • 几种linux内核文件的区别(vmlinux、zImage、bzImage、uImage、vmlinuz、initrd )

    对于Linux内核 编译可以生成不同格式的映像文件 例如 make zImage make uImage zImage是ARM Linux常用的一种压缩映像文件 uImage是U boot专用的映像文件 它是在zImage之前加上一个长度为
  • 3D WEB引擎HOOPS Commuicator助力Naval Architect Jumpstart快速启动船舶信息建模平台开发

    行业 造船业 挑战 新公司希望将创新的船舶信息建模产品推向市场 基于浏览器的产品需要支持高级可视化和强大的数据转换 以处理大型 复杂的造船项目 小型开发团队的任务是雄心勃勃的平台发布计划 解决方案 Tech Soft 3D提供领先的SDK
  • 请问在CSS里面,这个符号是什么 意思?

    是HTML注释 不是CSS注释 CSS是 之所以会有人这么写是因为有的浏览器不支持CSS CSS的标记就会被直接显示出来 用HTML注释掉是为了确保兼容性 而那些支持CSS的浏览器就可以正确解析了 追问 那请问我在什么地方都用就可以了吗 回
  • 开放-封闭原则

    一 定义 开放 封闭原则 是说软件实体 类 模块 函数等等 应该是可扩展的 但是不可修改 ASD 这个原则其实是有两个特征 一个是说 对于扩展是开放的 Open for extension 对于更改是封闭的 Closed for modif
  • java语言利用正则表达式判断身份证号码合法性

    判断身份证 要么是15位 要么是18位 最后一位可以为字母 并写程序提出其中的年月日 我们可以用正则表达式来定义复杂的字符串格式 d 17 0 9a zA Z d 14 0 9a zA Z 可以用来判断是否为合法的15位或18位身份证号码
  • AI人像抠图及图像合成:让你一键环游世界

    本程序基于百度飞浆 PaddlePaddle 平台完成 该程序通过DeepLabv3 模型完成一键抠图 encoder decoder进行多尺度信息的融合 同时保留了原来的空洞卷积和ASSP层 其骨干网络使用了Xception模型 提高了语
  • conda activate base报错Your shell has not been properly configured to use ‘conda activate‘.

    conda activate base报错Your shell has not been properly configured to use conda activate 使用conda activate base激活base环境时 出现
  • HTTP缓存机制

    缓存的作用 提高资源加载速度 减少网络请求 提高页面渲染速度 缓存的分类 前端缓存主要包括http缓存 数据缓存 HTTP缓存 常见的 HTTP 缓存只能存储 GET 响应 对于其他类型的响应则无能为力 浏览器在每次GET URL时都会先检
  • 【车联网原型系统|二】数据库+应用层协议设计

    物联网原型系统导航 车联网原型系统 一 项目介绍 需求分析 概要设计 https blog csdn net weixin 46291251 article details 125807297 车联网原型系统 二 数据库 应用层协议设计 h
  • Excel里关于if的9个函数,如何指定条件求和、计数、平均等

    总结了一下Excel里的求满足条件的计数 求和 平均值 最大值 最小值 标准差等9个方法 01 countif 作用 对满足条件的区域统计个数 模板 countif 条件所在的区域 条件 实例 A B列是广东不同地市的得分评价情况 在E2单
  • labelme标注结果可视化(持续补充)

    图像数据常用的标注工具是labelme 标注的格式是json labelme标注结果可视化 是将标注结果绘制到原始图像上 以方便查看标注结果 1 json文件读取与保存 由于labelme标注的保存格式为json 所以必须掌握json文件的