【代码】YOLOv8标注信息验证

此代码的功能是标注信息验证,将原图和YOLOv8标注文件(txt)放在同一个文件夹中,作为输入文件夹
程序将标注的信息还原到原图中,并将原图和标注后的图像一同保存,以便查看

两个draw_labels函数,分别是将目标区域轮廓标出来或者颜色填充

import cv2
import numpy as np
import osdef read_txt_labels(txt_file):"""从 txt 标注文件中读取标签:param txt_file: txt 标注文件路径:return: 标签列表"""with open(txt_file, "r") as f:labels = []for line in f.readlines():label_data = line.strip().split(" ")class_id = int(label_data[0])# 解析边界框坐标coordinates = [float(x) for x in label_data[1:]]labels.append([class_id, coordinates])return labelsdef draw_labels(image, labels):"""在图像上绘制分割区域轮廓:param image: 图像:param labels: 标签列表"""for label in labels:class_id, coordinates = label# 将坐标转换为整数并重新塑形为多边形points = [(int(x * image.shape[1]), int(y * image.shape[0])) for x, y in zip(coordinates[::2], coordinates[1::2])]# 使用多边形绘制轮廓cv2.polylines(image, [np.array(points)], True, (0, 0, 255), 2)  # 红色表示分割区域轮廓# def draw_labels(image, labels):
#   """
#   在图像上绘制分割区域
#   :param image: 图像
#   :param labels: 标签列表
#   """
#   for label in labels:
#     class_id, coordinates = label
#     # 将坐标转换为整数并重新塑形为多边形
#     points = [(int(x * image.shape[1]), int(y * image.shape[0])) for x, y in zip(coordinates[::2], coordinates[1::2])]
#     # 使用多边形填充
#     cv2.fillPoly(image, [np.array(points)], (0, 255, 0))  # 绿色表示分割区域def process_and_save_image(image_path, txt_path, output_folder):# 读取图像image = cv2.imread(image_path)labels = read_txt_labels(txt_path)# 复制原始图像以进行绘制image_with_labels = image.copy()# 绘制分割区域draw_labels(image_with_labels, labels)# 创建一个新的图像,左侧是原图,右侧是带标注的图combined_image = np.concatenate((image, image_with_labels), axis=1)# 定义输出图像路径base_filename = os.path.basename(image_path)output_image_path = os.path.join(output_folder, base_filename)# 保存图像cv2.imwrite(output_image_path, combined_image)def main(input_folder, output_folder):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 获取输入文件夹中的所有图片文件image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]for image_file in image_files:# 构建图像和标注文件的路径image_path = os.path.join(input_folder, image_file)txt_file = os.path.splitext(image_path)[0] + '.txt'# 检查标注文件是否存在if os.path.exists(txt_file):process_and_save_image(image_path, txt_file, output_folder)else:print(f"标注文件 {txt_file} 不存在,跳过图像 {image_file}")if __name__ == "__main__":input_folder_path = 'D:\Desktop\images'  # 替换为实际的输入文件夹路径output_folder_path = 'D:\Desktop\images_02'  # 替换为实际的输出文件夹路径main(input_folder_path, output_folder_path)

示例:

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

[Linux] 进程间通信基础

💻文章目录 📄前言进程间通信基础概念 管道概念管道的工作原理模拟实现shell中的管道 共享内存概念接口的介绍共享内存的使用 📓总结 📄前言 你是否了解进程间是如何通信的呢?你是否知道管道的工作原理呢?管…

关于Web端 —— UI自动化测试

在手工测试阶段,针对项目输出了测试用例,如果这些测试用例需要在版本迭代的过程中,需要进行回归测试,通过手工重复地执行测试用例,将会耗费大量的人力。 为此应运而生就有了自动化测试,通过使用自动化工具…

【docker】Docker打包SpringBoot镜像

📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 前置说明 最为原始的打包方式spring-boot-maven-plugin插件jib-maven-plugin插件dockerfle-maven-plugin插件 最为原始的方式 也就是使用Docker的打…

从哈希桶角度看 unordered_map 与 unordered_set 的实现

文章目录 一、引言二、C unordered系列的无序关联式容器概览三、基于哈希桶的C unordered系列数据结构模拟实现1、unordered_map的模拟实现2、unordered_set的模拟实现3、哈希桶及其迭代器实现的代码 四、扩展与应用1. 自定义哈希函数2. 其他unordered数据结构unordered_multim…

蓝桥杯/慈善晚会/c\c++

问题描述 热心公益的G哥哥又来举办慈善晚会了,这次他邀请到了巴菲特、马云等巨富,还邀请到了大V、小C等算法界泰斗。晚会一共邀请了n位尊贵的客人,每位客人都位于不同的城市,也就是说每座城市都有且仅有一位客人。这些城市的编号为…

大模型知识库

一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 1. 下载Langchain-chatchat git clone https://github.com/chatchat-space/Langchain-Chatchat/ 2. 下载大模型和embe…

c++ 自己实现一个迭代器

具体代码 /*自定义迭代器的实现 */ #include <iostream> using namespace std; class num {int val; //具体的数字int length; //数字的位数void calculate_length(){if(val/100){ //这个数字只有1位length1;return;}int x10; //这里就是不断重复除直…

python连接mysql数据库步骤

连接MySQL数据库通常需要使用第三方库&#xff0c;而在Python中&#xff0c;mysql-connector-python 是一个常用的 MySQL 连接库。以下是连接 MySQL 数据库的步骤&#xff1a; 安装 MySQL 连接库&#xff1a; 使用以下命令安装 mysql-connector-python&#xff1a; pip insta…

汽车电子零部件(8):T_Box

前言: 网联汽车(Connected Vehicles ,CV)是一个广泛的概念,四个主要的CV线程已发展起来:互联、自主、共享和电动。这些应用于包括CV在内的垂直领域:汽车、通信、互联网和共享手机服务。中国汽车工程师学会(SAEC)提倡将车载ADAS(高级驾驶员辅助系统)与通信技术相结合…

gitlab仓库使用流程(开发)

1.1.GitLab代码提交流程&#xff1a; 1.1.1准备阶段&#xff1a; 确保已经安装了Git&#xff0c;并且配置了正确的用户名和邮箱地址。 在本地创建一个新的文件夹&#xff0c;用于存放即将开发的代码。 1.1.2.拉取代码&#xff1a; 使用git clone命令从GitLab上拉取项目代码…

基于python的在线学习与推荐系统

技术&#xff1a;pythonmysqlvue 一、系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大…

java数据库关系数据库设计(下)

目录 1.概念模型:E-R图 1.实体 2.属性 3.联系 4.实体间的映射关系 2.物理模型:数据库模型图 3.数据库规范设计 1.常见数据库设计问题 2.三大范式 1.第一范式 2.第二范式 3.第三范式 3.规范化和性能的关系 1.概念模型:E-R图 在数据库需求分析阶段&#xff…

阿里5年经验之谈 —— 接口测试用例如何编写?

接口测试用例如何编写&#xff1f;下面简单给大家讲解一下。 接口测试用例是目前软件开发中不可或缺的一个重要部分&#xff0c;因此编写接口测试用例同样重要。 接口测试用例的作用非常明显&#xff0c;它能够帮助我们了解产品正在考验、调整它如何表现在特定情境之下、产品…

每日一题:C语言经典例题之求n!

题目描述 输入一个正整数n&#xff08;1<n<12)&#xff0c;求n!。 输入 输入一个正整数n。 输出 输出n!。 样例输入&#xff1a; 3 样例输出&#xff1a; 6 代码&#xff1a; #include <stdio.h> int f(int n) {if(n1)return 1;else{return n*f(n-1);} } int main(…

01|模型IO:输入提示、调用模型、解析输出

Model I/O 可以把对模型的使用过程拆解成三块&#xff0c;分别是输入提示&#xff08;对应图中的Format&#xff09;、调用模型&#xff08;对应图中的Predict&#xff09;和输出解析&#xff08;对应图中的Parse&#xff09;。这三块形成了一个整体&#xff0c;因此在LangCha…

VScode 设置个性化背景(保姆级教程)

VS Code设置个性化背景的作用主要体现在以下几个方面&#xff1a; 提升编程体验&#xff1a;个性化背景能够让编程环境更符合个人的审美和习惯&#xff0c;使得长时间在VS Code中进行代码编辑时&#xff0c;能够保持愉悦的心情&#xff0c;从而提高编程效率。减少视觉疲劳&…

【工具】Mermaid + 大模型画流程图

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引入使用画TCP三次握手了解历史人物 总结 引入 最近看面试文章关于TCP三次握手和…

数据预处理:重复值

数据重复值处理 数据重复值出现情况重复的记录用于分析演变规律重复的记录用于样本不均衡处理重复的记录用于检测业务规则问题 数据重复值出现情况 数据集中的重复值包括以下两种情况&#xff1a; 数据值完全相同的多条数据记录。这是最常见的数据重复情况。数据主体相同但匹…

云贝教育 |【技术文章】POSTGRESQL FDW应用

注: 本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 前言 Wrapper&#xff08;FDW&#xff09;是一项关键特性&#xff0c;它赋予数据库用户直接通过SQL语句访问存储于外部数据源的能…

【AcWing】蓝桥杯集训每日一题Day6|多路归并|贪心|1262.鱼塘钓鱼(C++)

1262.鱼塘钓鱼 1262. 鱼塘钓鱼 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;3449总尝试数&#xff1a;5251来源&#xff1a;《信息学奥赛一本通》算法标签枚举贪心堆多路归并 题目内容 有N个鱼塘排成一排&#xff0c;每个鱼塘中有一…