👨💻个人简介: 深度学习图像领域工作者
🎉总结链接:
链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:
📌1.工作中常用深度学习脚本
📌2.torch、numpy等常用函数详解
📌3.opencv 图片、视频等操作
📌4.个人工作中的项目总结(纯干活)
链接: https://blog.csdn.net/qq_28949847/article/details/128552785
🎉视频讲解: 以上记录,通过B站等平台进行了视频讲解使用,可搜索 ‘Python图像识别’ 进行观看
B站:Python图像识别
抖音:Python图像识别
西瓜视频:Python图像识别
github: https://github.com/wkentaro/labelme
相关脚本
1. 标签文件相关脚本
- 统计文件夹下标签文件(json文件)的数量、每个json文件中每个label的数量、以及文件夹下总的label的数量。
代码如下:
import os
import cv2
import json
def count_json_label(json_path):
label_num = {}
with open(json_path, "r", encoding='utf-8') as f:
# json.load数据到变量json_data
json_data = json.load(f)
for i in json_data['shapes']:
if i['label'] in label_num.keys():
label_num[i['label']] = label_num[i['label']] + 1
else:
label_num[i['label']] = 1
return label_num
if __name__ == "__main__":
# 图片和json所在文件夹
json_dir = r'\\SHARE\public\bbox_20230412'
all_labels_num = {}
json_num = 0
for root, dirs, files in os.walk(json_dir):
for file in files:
if not file.endswith('.json'):
continue
json_path = os.path.join(root, file)
label_num = count_json_label(json_path)
# 输出每个json文件中的label数量
print(file, label_num)
for label in label_num.keys():
if label in all_labels_num.keys():
all_labels_num[label] = all_labels_num[label] + label_num[label]
else:
all_labels_num[label] = label_num[label]
json_num = json_num + 1
print('此文件夹下label信息:', {'json_num': json_num, 'label_num': all_labels_num})
# 输出结果
# {'json_num': 663, 'label_num': {'person': 1296, 'face': 1202, 'face_keypoints': 1134}}
# json_num: 表示json文件的个数
# label_num: 表示每个label的个数
# person: 表示person类总共标注了1296个
# face: ....
2. 强制修改json标签文件中某个属性的值
import json
import os
import cv2
json_img_path = r'C:\Users\JoelYang\Desktop\111'
for root, dirs, files in os.walk(json_img_path):
for file in files:
if file.endswith('.json'):
with open(os.path.join(root, file), 'r') as f:
data = json.load(f)
img_name = data['imagePath']
img_path = os.path.join(root, img_name)
img = cv2.imread(img_path)
# 获取图片大小
h, w, _ = img.shape
imageData = data['imageData']
imageHeight = data['imageHeight']
imageWidth = data['imageWidth']
# 将 base64编码的图片取消,占存储空间
data['imageData'] = None
if imageHeight != h or imageWidth != w:
print(img_name, imageHeight, imageWidth, w, h)
# 修改宽 高
data['imageHeight'] = h
data['imageWidth'] = w
# 写入json
with open(os.path.join(root, file), "w") as dump_f:
json.dump(data, dump_f)
3. 删除掉 json中shapes为空的图片和json文件(删除无标签的文件)
'''
检查各个文件夹下的json是否有无标签的文件
'''
import json
import os
import shutil
json_img_path = r'\\SHARE\public\Time_Plus\traindata\bbox\tiaoshui3m'
save_path = r'\\SHARE\public\Time_Plus\traindata\bbox\test'
for root, dirs, files in os.walk(json_img_path):
for file in files:
if file.endswith('.json'):
json_path = os.path.join(root, file)
jpg_path = json_path.replace('.json', '.jpg')
with open(json_path, "r", encoding='utf-8') as f:
# json.load数据到变量json_data
json_data = json.load(f)
# 删除掉没有标签的文件,jpg和json同时移到save_path文件夹
if len(json_data['shapes']) == 0:
# 移动文件
shutil.move(json_path, os.path.join(save_path, file))
shutil.move(jpg_path, os.path.join(save_path, file.replace('.json', '.jpg')))