关于labelme标注生成的json文件批量转为label/mask的问题

当我们制作自己的图像分割数据集时,一般都需要对数据集进行像素级标注,生成mask(对应原图像的每个像素的类别图,一般为灰度图),常用工具为labelme,安装很简单,anaconda下安装为以下四个语句:

conda create --name=labelme python=3.7

conda activate labelme

conda install pyqt

pip install labelme

参考链接:https://blog.csdn.net/qq_21466543/article/details/80693955

对所有数据集用labelme标注好保存后,会在原图的路径下自动生成:原图片名称.json文件。为了由json文件生成分割的mask标签,我们此刻需要使用labelme的labelme_json_to_dataset命令将json文件转换为mask(安装好labelme后,可以直接在终端输入labelme_json_to_dataset C:\Users\Administrator\Desktop\tumor_seg\quick_val\010.json(后面是json文件的绝对路径)),但此命令只能一次转化一个json文件,为了能批量转换,需要改进json_to_dataset.py文件,然后使用json_to_dataset.py文件去批量转换json文件。我的json_to_dataset.py的位置在D:\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli里面,读者可以参考,修改的时候最好复制了修改,将原文件重命名保留,以防修改错误难以恢复,修改内容参考网址:http://blog.csdn.net/u014513323/article/details/81166997。

注意:此处博主说mask_png中存放的是8位掩码文件存疑,作者运行后生成的mask_png图像几乎为黑色,导入matlab中看到,mask的像素值为1或0,灰度值太低,故考虑增加对比度(二分类直接二值化),但作者将mask中灰度值为1的像素灰度值置为255时,发现mask仍然全黑,后面修改了原博客程序中的第68行为 mask_dst = skimage.color.rgb2gray(lbl)   # 将lbl转换为普通8位灰度图  。此时,在matlab中,将生成的mask像素值为1的像素重新赋予255的像素值后,matlab显示此刻mask为二值化的黑白图。所以,原博客代码生成的mask_png实际上为高精度的16位灰度图,255的灰度值相比其65535的最大灰度值仍然很小,所以将其作为8位灰度图二值化时仍然输出全黑的图片。这时有两种方法,其一是上述所提到的更改程序生成普通8位灰度图,其二是使用原程序,但二值化时,将mask中1像素值更改为65535像素值。

参考博客:

https://blog.csdn.net/qq_21466543/article/details/80693955

http://blog.csdn.net/u014513323/article/details/81166997

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容