Python——批量将标注数据在原始图片中画出来
因为怀疑标注数据可能有问题,怕标注数据不准确,所以需要将标注数据在原始图片中画出来
import os from PIL import Image, ImageDraw # 获取图片宽高 def get_image_width_high(full_image_name): image = Image.open(full_image_name) image_width, image_high = image.size[0], image.size[1] return image_width, image_high # 读取原始标注数据 def read_label_txt(full_label_name, full_image_name): fp = open(full_label_name, mode="r") lines = fp.readlines() fp.close() image_width, image_high = get_image_width_high(full_image_name) object_list = [] for line in lines: array = line.split() x_label_min = (float(array[1]) - float(array[3]) / 2) * image_width x_label_max = (float(array[1]) + float(array[3]) / 2) * image_width y_label_min = (float(array[2]) - float(array[4]) / 2) * image_high y_label_max = (float(array[2]) + float(array[4]) / 2) * image_high category = int(array[0]) obj_info = [x_label_min, y_label_min, x_label_max, y_label_max, category] object_list.append(obj_info) return object_list def main(): image_path = 'test/images/' # 图片文件路径 label_path = 'test/labels/' # 标注文件路径 output_path = 'test/out' # 输出图片路径 all_image = os.listdir(image_path) for i in range(len(all_image)): full_image_path = os.path.join(image_path, all_image[i]) # 分离文件名和文件后缀 image_name, image_extension = os.path.splitext(all_image[i]) # 拼接标注路径 full_label_path = os.path.join(label_path, image_name+'.txt') # 打开图片 img = Image.open(full_image_path) # 读取标注数据 object_list = read_label_txt(full_label_path, full_image_path) # 画框 draw = ImageDraw.Draw(img) for obj_info in object_list: x1, y1, x2, y2 = obj_info[:4] draw.line([(x1, y1), (x2, y1), (x2, y2), (x1, y2), (x1, y1)], fill=(255, 0, 0), width=5) # 将画框后的图片保存至输出路径 img.save(os.path.join(output_path, all_image[i])) if __name__ == '__main__': main()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)