欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Labelme实现图像分割

程序员文章站 2022-03-27 10:30:50
...

labelme是MIT出品的用来手动实现图片分割的傻瓜式软件。他的安装很简单。

通过pip的方式可以直接进行安装。

pip install labelme

但是可能有前置库,要安装PyQt。

pip install PyQt5

也是通过pip的方式进行安装。

安装成功后,在cmd界面直接输入labelme即可弹出窗口进行标注。

用Labelme实现图像分割

标注之后,该软件会保存一个json文件到相应文件夹下。

用Labelme实现图像分割

类似这样。

然后在命令行中输入,

用Labelme实现图像分割

其格式为:labelme_json_to_dataset + json文件路径

运行后会生成一个文件夹,文件夹中包含四个部分。

 用Labelme实现图像分割

我们对视频标注的话,有很多图片。因此我写了一个批量处理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文件重命名,按顺序存放到文件夹中。

用Labelme实现图像分割

这样我们的分割任务就完成啦。

耗时一天半。

相关标签: 科研记录