发布网友 发布时间:2024-09-30 04:42
共1个回答
热心网友 时间:9分钟前
部分参考了这篇文章的想法,如果看我的过程不理解可以参考一下这位作者。
labelme是一个用于对数据进行标记的软件,对图像进行标记后会得到json文件,包含相应标签的轮廓位置和标签名称等信息,可以用内置的相应函数进行提取,如使用这个作者的想法进行提取信息,那么会生成如下图所示的文件,其中imgs是原图像,labels是标记后的图像,最后是和原图进行比较生成标签图,都是调用内置的函数生成的。
但实际上,我们不仅需要提取全部的label,我们还需要提取特定的label,即如上图三个label的情况,我们希望生成这样分别标注的结果。
配置labelme环境,用labelme标记数据得到json文件。打开图片,点击Create Polygons创建,对图片进行标记,类似于PS的钢笔工具,方便实时修改,输入label名称和group ID,保存生成对应json文件。
提取json文件出相应标签的信息,通过json得到图片,生成mask_out_0/1/2三张图片,分别是三个标签的黑白图片,mask_together图片,将三个标签的图像直接加起来,生成所有标记图片。
批量注入到新的背景,方法包括直接相加、先移除背景图的该区域再相加、线性叠加对应区域,主要思想为调整背景图大小至与原图一致,通过cv2.addWeighted公式进行线性叠加。
实现代码,遍历所有label,给每个label对应的数字,将图片格式从RGB转换为BGR,输出文件名与原一致方便管理数据。注意调整图片大小,强制背景图大小与原图一致,循环次数根据图片数量调整。
解决一些路径问题,读取图片后可能乱序,但可以通过文件夹组织和排序解决。处理文件路径中的特殊字符,如'\'和'\',在路径前加'r'可解决路径写入问题。更新labelme_shapes_to_label警告,对应修改shapes_to_label方法。
遇到的bug包括路径问题和旧版labelme的警告,解决路径问题时在写入字符串前加'r',更新警告通过调整shapes_to_label方法实现。