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

Python实用脚本:可视化分割txt标签数据

 可视化原始图像以及对应txt分割标签,校验txt生成是否正确。

import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollectiondef visualize_masks(image_path, label_path, output_path=None):# 读取图像image = cv2.imread(image_path)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)height, width = image.shape[:2]# 创建图形fig, ax = plt.subplots(1)ax.imshow(image)# 读取标签文件with open(label_path, 'r') as f:lines = f.readlines()patches = []colors = []# 预定义一些颜色用于不同类别color_map = {0: (1, 0, 0, 0.5),    # 红色1: (0, 1, 0, 0.5),    # 绿色2: (0, 0, 1, 0.5),    # 蓝色3: (1, 1, 0, 0.5),    # 黄色4: (1, 0, 1, 0.5),    # 紫色}for line in lines:parts = line.strip().split()if len(parts) < 3:  # 至少类别+1个点continueclass_id = int(parts[0])# 将相对坐标转换为绝对坐标points = np.array([float(x) for x in parts[1:]]).reshape(-1, 2)points[:, 0] *= width   # x坐标points[:, 1] *= height  # y坐标# 创建多边形polygon = Polygon(points, closed=True)patches.append(polygon)# 为不同类别分配颜色color = color_map.get(class_id % len(color_map), (0.5, 0.5, 0.5, 0.5))colors.append(color)# 添加所有多边形到图中p = PatchCollection(patches, alpha=0.4)p.set_color(colors)ax.add_collection(p)# 添加图例from matplotlib.lines import Line2Dlegend_elements = [Line2D([0], [0], marker='o', color='w', label=f'Class {k}',markerfacecolor=v[:3], markersize=10) for k, v in color_map.items()]ax.legend(handles=legend_elements, loc='upper right')plt.axis('off')if output_path:plt.savefig(output_path, bbox_inches='tight', pad_inches=0)print(f"可视化结果已保存到 {output_path}")else:plt.show()# 使用示例
image_path = "test.jpg"  # 替换为你的图像路径
label_path = "test.txt"  # 替换为你的标签路径
output_path = "test.png"  # 可选: 输出文件路径visualize_masks(image_path, label_path, output_path)

http://www.xdnf.cn/news/9394.html

相关文章:

  • TWTSolutions水厂污水厂设计计算软件:化学强化絮凝单元
  • leetcode:1688. 比赛中的配对次数(python3解法,数学相关算法题)
  • ubuntu安装tigervnc
  • Python优雅执行SSH命令:10种方法+虚拟环境深度实践
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • Spring AI(一)
  • windows 环境中 python连接到达梦库,及相关问题解决办法
  • TDengine 中的存储配置
  • 线程池详解:原理、使用与优化
  • 78. Subsets和90. Subsets II
  • Linux:基础指令与内涵理解(下)与权限
  • git 命令之-git cherry-pick
  • 短剧看广告APP系统开发:打造高效变现与用户体验双赢平台
  • 人工智能AI之机器学习基石系列 第 2 篇:数据为王——机器学习的燃料与预处理
  • JavaSE核心知识点04工具04-04(Git)
  • 专业教育机构视频网站平台播放器页面如何处理视频加密的?
  • [React]实现一个类zustand公共状态库
  • 2025上半年软考系统架构设计师选择题试题与答案
  • AI Agents执行流程和决策流程学习
  • 零基础设计模式——结构型模式 - 组合模式
  • RapidOCR4j项目学习
  • 润和星闪WS63E的MQTT示例程序存在的潜在问题
  • 经典查找算法合集(下)
  • 行为型:命令模式
  • 多语言实现插值查找算法
  • 理解vue-cli中的webpack
  • Minktec 柔性弯曲传感器,灵敏捕捉坐姿弓背、精准监测行走姿态,守护儿童背部健康,为科学健身提供数据支撑,开启职业健康与背痛 AI 干预新方向。
  • vue + ant-design + xlsx 实现Excel多Sheet页导出功能
  • 如何通过ETL对WebService进行调用
  • 顶会新方向:卡尔曼滤波+目标检测