用Labelme实现图像分割
程序员文章站
2022-03-27 10:30:50
...
labelme是MIT出品的用来手动实现图片分割的傻瓜式软件。他的安装很简单。
通过pip的方式可以直接进行安装。
pip install labelme
但是可能有前置库,要安装PyQt。
pip install PyQt5
也是通过pip的方式进行安装。
安装成功后,在cmd界面直接输入labelme即可弹出窗口进行标注。
标注之后,该软件会保存一个json文件到相应文件夹下。
类似这样。
然后在命令行中输入,
其格式为:labelme_json_to_dataset + json文件路径
运行后会生成一个文件夹,文件夹中包含四个部分。
我们对视频标注的话,有很多图片。因此我写了一个批量处理json文件的脚本。
#!/bin/bash
path="D:\\desktop\\data\\train-video\\v_ApplyEyeMakeup_g05_c01\\"
for i in $(seq 1 179)
do
if [ $i -le 99 ] && [ $i -ge 10 ]
then labelme_json_to_dataset ${path}0${i}.json
elif [ $i -lt 10 ]
then labelme_json_to_dataset ${path}00${i}.json
else labelme_json_to_dataset ${path}${i}.json
fi
done
批量处理json文件生成标注文件之后,我们其实要的只是分割图。
通过一个python文件处理。此部分代码转自:https://www.jianshu.com/p/62082fd8a14c
import cv2 as cv
import random
import glob
import os
from PIL import Image
import shutil
# import pdb
def get_samples(foldername,savePath):
print('savePath:',savePath)
if os.path.exists(savePath) is False:
os.makedirs(savePath)
filenames = os.listdir(foldername)
for filename in filenames:
full_path = os.path.join(foldername, filename)
new_name = filename[:-5]+'.png'
label_png = os.listdir(full_path)[2]
#os.rename(os.path.join(filename, label_png),os.path.join(filename, name))
shutil.copy(os.path.join(full_path, label_png), os.path.join(savePath, label_png))
os.rename(os.path.join(savePath, label_png),os.path.join(savePath, new_name))
readPath = 'D:\\desktop\\data\\train-video\\v_ApplyEyeMakeup_g11_c02\\segf'
savePath = 'D:\\desktop\\data\\train-video\\v_ApplyEyeMakeup_g11_c02\\seg'
get_samples(readPath, savePath)
该python文件的作用是把所有png文件重命名,按顺序存放到文件夹中。
这样我们的分割任务就完成啦。
耗时一天半。