【深度学习】ultralytics, yolo seg,实例分割图绘制,核对yolo seg 的txt标记对不对

这段代码的作用是从指定路径读取图像和标签文件,然后在图像上绘制分割区域和相关点,并保存最终的图像。以下是每个函数的具体作用及其解释:

  1. read_labels(label_path):

    • 读取指定路径的标签文件。
    • 标签文件的每一行表示一个物体的分割信息,包含类别ID和多个坐标点(归一化的x, y值)。
    • 返回一个列表,每个元素是一个元组,包含类别ID和坐标点。
  2. random_color():

    • 生成一个随机颜色,用于绘制分割区域和边界。
  3. draw_segmentation(image, labels):

    • 接受一个图像和标签信息,在图像上绘制分割区域、边界和点。
    • 对于每个标签,先将归一化坐标转换为实际像素坐标,然后用随机颜色绘制多边形和边界,最后绘制点。
    • 使用cv2.addWeighted函数将绘制的分割区域和原始图像进行融合,产生半透明效果。
  4. 主程序部分:

    • 指定图像路径并推导对应的标签文件路径。
    • 读取图像和标签。
    • 调用draw_segmentation函数在图像上绘制分割区域。
    • 保存最终绘制后的图像。

改进和优化建议

  1. 错误处理: 增加对文件读取和解析的错误处理,以避免程序崩溃。
  2. 颜色透明度: 透明度设置硬编码为100,可以将其作为可配置参数传入函数。
  3. 文件路径: 路径处理方式可以更灵活,以适应更多的文件组织结构。

完整的改进代码示例

import cv2
import numpy as np
import random
import osdef read_labels(label_path):with open(label_path, 'r') as file:lines = file.readlines()labels = []for line in lines:parts = list(map(float, line.strip().split()))class_id = int(parts[0])points = np.array(parts[1:]).reshape(-1, 2)labels.append((class_id, points))return labelsdef random_color():return [random.randint(0, 255) for _ in range(3)]def draw_segmentation(image, labels, alpha=0.4, color_transparency=100):overlay = image.copy()for class_id, points in labels:# Convert normalized coordinates to absolute pixel valuespoints[:, 0] *= image.shape[1]points[:, 1] *= image.shape[0]points = points.astype(int)# Draw filled polygon with random colorcolor = random_color()cv2.fillPoly(overlay, [points], color + [color_transparency])  # 100 for transparency# Draw edges and pointscv2.polylines(image, [points], isClosed=True, color=color, thickness=2)for point in points:cv2.circle(image, tuple(point), 3, color, -1)# Combine original image with overlaycv2.addWeighted(overlay, alpha, image, 1 - alpha, 0, image)return image# Paths
image_path = r"/ssd/xiedong/lightyolov5/yolo-seg/coco8-seg/images/train/000000000009.jpg"
label_path = image_path.replace("images", "labels").replace(".jpg", ".txt")# Ensure paths exist
if not os.path.exists(image_path):raise FileNotFoundError(f"Image file not found: {image_path}")
if not os.path.exists(label_path):raise FileNotFoundError(f"Label file not found: {label_path}")# Read image and labels
image = cv2.imread(image_path)
labels = read_labels(label_path)# Draw segmentation on the image
segmented_image = draw_segmentation(image, labels)# Save the result
output_path = "segmented_image1.png"
cv2.imwrite(output_path, segmented_image)
print(f"Segmented image saved to {output_path}")

改进点

  • 增加了对文件路径存在性的检查,避免文件不存在时程序崩溃。
  • 将透明度参数和颜色透明度参数外部化,增加函数的灵活性。
  • 在保存结果图像时,打印保存路径,方便用户确认保存位置。

在这里插入图片描述

在这里插入图片描述

问询、帮助

你如果需要帮助,请看这里:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

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

相关文章

硬盘的分区

目录 概念 硬盘的分区 实操 创建分区 fdisk&#xff08;<2T&#xff09; 创建文件系统 挂载 自动挂载&#xff08;永久挂载&#xff09; gpt区分 swap 交换分区 如何删除已挂载的分区 概念 硬盘&#xff1a;计算机的存储设备。&#xff08;如无特殊说明&#xff0…

sklearn线性回归--岭回归

sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型&#xff0c;因此它的预测公式与普通最小二乘法相同。但在岭回归中&#xff0c;对系数&#xff08;w&#xff09;的选择不仅要在训练数据上得到好的预测结果&#xff0c;而且还要拟合附加约束&#xff0c;使系数尽量小…

基于springboot+vue的班级综合测评管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

git中忽略文件的配置

git中忽略文件的配置 一、在项目根目录下创建.gitignore文件二、配置规则如果在配置之前已经提交过文件了&#xff0c;要删除提交过的&#xff0c;如何修改&#xff0c;参考下面的 一、在项目根目录下创建.gitignore文件 .DS_Store node_modules/ /dist# local env files .env…

找一个区间内两个数最大公约数的最大值(24年gdcpc省赛G题)

题目大意就是t组数据,每组一个左右边界l,r,问区间内的两个是xi,yi是区间内max(gcd(xi,yi)),数据范围是1e12. 答案就是找到第一个a*x<b*x(a<b),他们两在l到r之间且x最大,那么x就是答案,可以知道,要使两个数在区间内,那么他们之间的差值要小于min(R-L,[R/2]),[]表示向下取…

【安装】VMware虚拟机安装windows操作系统,VM的相关操作

目录 引出报错&#xff1a;press any key to boot form cd激活调整显示 在VMware上新建虚拟机&#xff0c;并安装Windows1、新建虚拟机2、装载 ISO 镜像3、安装Windows server 20164、开机初始化 虚拟机操作1、虚拟机基本操作2、虚拟机快照3、虚拟机克隆4、VMware Tools 总结 引…

消费增值:国家支持的消费新零售模型

在当下的消费时代&#xff0c;一个全新的概念——消费增值&#xff0c;正逐渐走进大众视野。它不仅仅是一种消费模式&#xff0c;更是一种全新的财富增长途径。那么&#xff0c;消费增值究竟是什么&#xff1f; 首先&#xff0c;消费增值的本质在于将消费行为与投资行为相结合…

无人机技术:倾转旋翼飞行器的关键技术详解

一、总体设计 倾转旋翼飞行器作为一种独特的垂直起降与水平巡航的航空器&#xff0c;其总体设计是关键技术之一。总体设计涵盖了飞行器的整体布局、重量分配、气动性能、机械结构设计等多个方面。在总体设计中&#xff0c;需要充分考虑飞行器的垂直起降、悬停、过渡飞行和水平…

二分例题(D.负重越野,I.路径规划)

这两天的训练赛都有一道二分的题&#xff0c;但是都没往二分上面想&#xff0c;同样不知道怎么二分。 D. Fast and Fat 思路 二分的关键也就是check函数怎么写了&#xff0c;求队伍最大速度&#xff0c;可以分为速度>mid和<mid两部分&#xff0c;再判断&#xff0c;能不…

流量分析入门

什么是流量分析 通过捕捉网络中流动的数据包&#xff0c;查看里面的数据和协议&#xff0c;流量分析和各种数据的统计来发现网络运行中的问题&#xff0c;在ctf中一般是一个包含流量数据的 PCAP 文件。 [陇剑杯 2021]签到 1.题目问我们正在进行的事什么协议的攻击 2.打开wire…

【vue与iframe通讯】

vue 与 iframe 通讯 发送数据vue 向 iframe 发送数据iframe 向 vue 发送数据接收信息( vue & iframe 通用) 实现相互通讯通讯流程图实现代码vue 页面iframe页面iframe 内部重定向访问地址,更新 vue 路由 访问跨域代码下载 前言&#xff1a;vue嵌套iframe实现步骤 发送数据…

基于Pytorch框架的深度学习ShufflenetV2神经网络十七种猴子动物识别分类系统源码

第一步&#xff1a;准备数据 17种猴子动物数据&#xff1a; self.class_indict ["白头卷尾猴", "弥猴", "山魈", "松鼠猴", "叶猴", "银色绒猴", "印度乌叶猴", "疣猴", "侏绒"…

做抖音小店不懂这四个“重点”!那就别怪你的店铺,做不长久!

我相信大家做抖音小店&#xff0c;都去抖音刷过知识点&#xff0c;也去浏览器学习过技巧 但在这里&#xff0c;我给大家泼盆冷水 方法再多&#xff01;这四点不搞明白&#xff0c;那你的店铺出几天单&#xff0c;也就再也做不起来了 哪四点&#xff1f;请认真的看下去&#…

django-celery-beat自动调度异步任务

Celery是一个简单、灵活且可靠的分布式系统&#xff0c;专门用于处理大量消息的实时任务调度。它支持使用任务队列的方式在分布的机器、进程、线程上执行任务调度。Celery不仅支持异步任务&#xff08;如发送邮件、文件上传、图像处理等耗时操作&#xff09;&#xff0c;还支持…

2024.05.27学习记录

1、面经复习&#xff1a; 实际工作经验章节 2、代码随想录刷题&#xff1a;动态规划剩下部分和单调栈 3、rosebush 组件库完成Input 和 AutoComplete部分内容

2024甘肃省三支一扶报名流程详细图解

预计报名时间&#xff1a;2024年5月27日9:00至5月31日18&#xff1a;00 2024甘肃省三支一扶报名流程 登录甘肃人力人力资源考试中心&#xff0c;选择网上报名 进入账户登录&#xff0c;首次登录同学请先注册账号。 注册账号&#xff0c;认真填写&#xff0c;仔细核对信息。…

惠海 H6901B升压恒流3.7V 7.4V 12V 24V 30V 36V 48V 60V 80V 100V调光无频闪细腻顺滑

H6901B是一款升压型LED恒流驱动芯片&#xff0c;具有良好稳定性的特点。H6901B的主要特点包括宽输入电压范围&#xff08;2.7V-100V&#xff09;、高工作频率&#xff08;1MHz&#xff09;以及多种保护功能&#xff08;如芯片供电欠压保护、过温保护、软启动等&#xff09;。此…

美颜技术揭秘:美颜SDK与美颜接口的开发实践

一、美颜技术的基本原理 1.1面部检测与特征点识别 面部检测是美颜技术的第一步&#xff0c;通过计算机视觉算法检测图像中的人脸位置。常用的方法有Haar特征、卷积神经网络&#xff08;CNN&#xff09;等。 1.2图像增强与美化 -磨皮 -美白 -眼部增强 -脸型优化 1.3实时处…

【爬虫软件】2024最新短视频评论区抓取工具

一、背景说明 1.0 采集目标 采集DOU音评论数据对引流截流和获客有很多好处。首先&#xff0c;通过分析DOU音评论数据&#xff0c;我们可以更好地了解用户对于产品或内容的喜好和需求&#xff0c;从而调整营销策略&#xff0c;吸引更多用户关注和点击。其次&#xff0c;评论数据…

解密MySQL中的临时表:探究临时表的神奇用途

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 解密MySQL中的临时表&#xff1a;探究临时表的神奇用途 前言临时表的定义与分类创建与使用临时表临时表的操作与管理优化与性能提升注意事项与最佳实践 前言 在数据库管理中&#xff0c;临时表是一个…