数据标注:批量转换json文件,出现AttributeError: module ‘labelme.utils‘ has no attribute ‘draw_label‘错误

本文主要是介绍数据标注:批量转换json文件,出现AttributeError: module ‘labelme.utils‘ has no attribute ‘draw_label‘错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

labelme版本更换为3.11.2

"D:\Anaconda3\Lib\site-packages\labelme\utils\draw.py"缺失?:

import io
import os.path as ospimport numpy as np
import PIL.Image
import PIL.ImageDraw
import PIL.ImageFontdef label_colormap(N=256):def bitget(byteval, idx):return ((byteval & (1 << idx)) != 0)cmap = np.zeros((N, 3))for i in range(0, N):id = ir, g, b = 0, 0, 0for j in range(0, 8):r = np.bitwise_or(r, (bitget(id, 0) << 7 - j))g = np.bitwise_or(g, (bitget(id, 1) << 7 - j))b = np.bitwise_or(b, (bitget(id, 2) << 7 - j))id = (id >> 3)cmap[i, 0] = rcmap[i, 1] = gcmap[i, 2] = bcmap = cmap.astype(np.float32) / 255return cmapdef _validate_colormap(colormap, n_labels):if colormap is None:colormap = label_colormap(n_labels)else:assert colormap.shape == (colormap.shape[0], 3), \'colormap must be sequence of RGB values'assert 0 <= colormap.min() and colormap.max() <= 1, \'colormap must ranges 0 to 1'return colormap# similar function as skimage.color.label2rgb
def label2rgb(lbl, img=None, n_labels=None, alpha=0.5, thresh_suppress=0, colormap=None,
):if n_labels is None:n_labels = len(np.unique(lbl))colormap = _validate_colormap(colormap, n_labels)colormap = (colormap * 255).astype(np.uint8)lbl_viz = colormap[lbl]lbl_viz[lbl == -1] = (0, 0, 0)  # unlabeledif img is not None:img_gray = PIL.Image.fromarray(img).convert('LA')img_gray = np.asarray(img_gray.convert('RGB'))# img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)# img_gray = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2RGB)lbl_viz = alpha * lbl_viz + (1 - alpha) * img_graylbl_viz = lbl_viz.astype(np.uint8)return lbl_vizdef draw_label(label, img=None, label_names=None, colormap=None, **kwargs):"""Draw pixel-wise label with colorization and label names.label: ndarray, (H, W)Pixel-wise labels to colorize.img: ndarray, (H, W, 3), optionalImage on which the colorized label will be drawn.label_names: iterableList of label names."""import matplotlib.pyplot as pltbackend_org = plt.rcParams['backend']plt.switch_backend('agg')plt.subplots_adjust(left=0, right=1, top=1, bottom=0,wspace=0, hspace=0)plt.margins(0, 0)plt.gca().xaxis.set_major_locator(plt.NullLocator())plt.gca().yaxis.set_major_locator(plt.NullLocator())if label_names is None:label_names = [str(l) for l in range(label.max() + 1)]colormap = _validate_colormap(colormap, len(label_names))label_viz = label2rgb(label, img, n_labels=len(label_names), colormap=colormap, **kwargs)plt.imshow(label_viz)plt.axis('off')plt_handlers = []plt_titles = []for label_value, label_name in enumerate(label_names):if label_value not in label:continuefc = colormap[label_value]p = plt.Rectangle((0, 0), 1, 1, fc=fc)plt_handlers.append(p)plt_titles.append('{value}: {name}'.format(value=label_value, name=label_name))plt.legend(plt_handlers, plt_titles, loc='lower right', framealpha=.5)f = io.BytesIO()plt.savefig(f, bbox_inches='tight', pad_inches=0)plt.cla()plt.close()plt.switch_backend(backend_org)out_size = (label_viz.shape[1], label_viz.shape[0])out = PIL.Image.open(f).resize(out_size, PIL.Image.BILINEAR).convert('RGB')out = np.asarray(out)return outdef draw_instances(image=None,bboxes=None,labels=None,masks=None,captions=None,
):import matplotlib# TODO(wkentaro)assert image is not Noneassert bboxes is not Noneassert labels is not Noneassert masks is Noneassert captions is not Noneviz = PIL.Image.fromarray(image)draw = PIL.ImageDraw.ImageDraw(viz)font_path = osp.join(osp.dirname(matplotlib.__file__),'mpl-data/fonts/ttf/DejaVuSans.ttf')font = PIL.ImageFont.truetype(font_path)colormap = label_colormap(255)for bbox, label, caption in zip(bboxes, labels, captions):color = colormap[label]color = tuple((color * 255).astype(np.uint8).tolist())xmin, ymin, xmax, ymax = bboxdraw.rectangle((xmin, ymin, xmax, ymax), outline=color)draw.text((xmin, ymin), caption, font=font)return np.asarray(viz)

 

这篇关于数据标注:批量转换json文件,出现AttributeError: module ‘labelme.utils‘ has no attribute ‘draw_label‘错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143970

相关文章

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim