Python移除Labelme标注文件中无标注框的JSON文件
前言
- 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。
- 更多精彩内容,可点击进入我的个人主页查看
前提条件
- 熟悉Python
相关介绍
- Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
- Python OS模块是负责程序与操作系统的交互,提供了访问操作系统底层的接口和非常丰富的方法用来处理文件和目录。
实验环境
- Python 3.x (面向对象的高级语言)
Python移除Labelme标注文件中无标注框的JSON文件
import os
import cv2
import json
import shutil
# 图像显示函数
def show(name, img):
cv2.namedWindow(name, 0) # 用来创建指定名称的窗口,0表示CV_WINDOW_NORMAL
# cv2.resizeWindow(name, img.shape[1], img.shape[0]); # 设置宽高大小为640*480
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def count_shapes_is_null(in_json_path,noshapes_path_list):
with open(in_json_path, "r", encoding='utf-8') as f:
# json.load数据到变量json_data
json_data = json.load(f)
if json_data['shapes']==[]:
noshapes_path_list.append(in_json_path)
if __name__=="__main__":
img_dir = 'images/'
in_dir_name = 'jsons/' # 图片和json所在文件夹
out_dir_name = 'output/'
if not os.path.exists(out_dir_name):
os.makedirs(out_dir_name)
all_name_list = os.listdir(in_dir_name) # 获取文件夹内所有文件名列表
# 获取所有json文件,并修改
json_name_list = [i for i in all_name_list if i.endswith('.json')] # 图片路径列表
print('json总数:',len(json_name_list))
noshapes_path_list = []
for json_name in json_name_list: # 遍历json文件并修改
in_json_path = in_dir_name + json_name
# print(in_json_path)
count_shapes_is_null(in_json_path,noshapes_path_list)
print('shapes为空的json数:',len(noshapes_path_list))
# print('shapes为空的json路径列表:',noshapes_path_list)
# 移除shape为空文件
for i in noshapes_path_list:
img_path = img_dir + i[len(in_dir_name):-5] + '.png'
json_path = i
# print(img_path)
# print(json_path)
try:
shutil.move(img_path,out_dir_name)
shutil.move(json_path,out_dir_name)
except Exception as e:
print(e)
# print('shapes为空的json数:',len(noshapes_path_list))
更多精彩内容,可点击进入Python日常小操作专栏或我的个人主页查看