参考文章:https://blog.csdn.net/u010103202/article/details/81635436;https://blog.csdn.net/u010732965/article/details/83315617
标注软件:labelme。
1. 首先打开labelme软件
本例子是在win7下使用labelme,所以打开PowerShell,进入到labelme的安装路径,输入labelme,即可打开,如下图
2. 对数据做标签
首先将图像保存在一个文件夹里,使用labelme界面上的OpenDir打开文件夹。
使用labelme界面的CreatePolygons进行手动打标签,以心脏心室为例子,如下图:
打完标签后如果需要调整就点击Edit Polygons开始调整:调整为内壁的圈
做完一张图,点击NextImage就可以做下一张图的标注。
3. 做完标签点击Save进行保存,每张图会保存成一个单独的Json文件
本例子中使用两张图,生成两个json文件,如下图:
4. 批量转换josn文件获取标签图
参考本例子中的参考文件,修改json_to_dataset.py的内容,使能够批量转换json文件。因为原始代码只能转一个json文件,代码中打开的是json文件名,修改之后,可以打开一个文件夹的名称,然后批量转换文件夹内所有json文件。
修改之后,进入labelme_json_to_dataset.exe所在路径。
在PowerShell中输入命令如下:
labelme_json_to_dataset E:\PycahrmProjects\test\jsonfiles,其中E:\PycahrmProjects\test\jsonfiles是json文件所在的文件夹名称。
然后每个json文件会生成一个单独的文件夹,里面有5个文件,内容如下图:
上图中label.png就是我们需要的标签结果文件。
5. 从批量生成的json文件夹中提取标签结果的png文件
在Python中,使用shutil库,进行文件拷贝,代码如下图:
import os
import shutil
jsonimages = "E:\\PycahrmProjects\\test\\jsonFiles\\jsonFiles\\"
dstfile = "E:\\PycahrmProjects\\test\\jsonFiles\\mask\\"
filepath_list = os.listdir(jsonimages)
for i, file_path in enumerate(filepath_list):
basename = file_path.split('_')[0]
srcpath = jsonimages+file_path
dstpath = dstfile+basename+".jpg"
file_list = os.listdir(srcpath)
for image in file_list:
if image == "label.png":
shutil.copy(os.path.join(srcpath, image), dstpath)
生成结果如下图:
以上是使用labelme获得图像标签数据的完整过程。