数据标注:批量转换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

相关文章

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用