常用代码合集-Python
个人微信公众号:AI研习图书馆
ID:(Art-Intelligence)
欢迎关注,交流学习,共同进步~
1. 根据txt文件中图片的名字批量提取对应的图片并保存到另一个文件夹
# -*- coding: UTF-8 -*-
#!/usr/bin/env python
import sys
import re
from PIL import Image
sys.path.append('E:\\CODE')
#f1 = open('E:\CODE\TX\dir.txt','r')
#f2 = open('E:\CODE\TX\dir.txt','w+')
#for line in f1.readlines():
# if re.findall(' 1',line): #查找“空格1”的行 每行的格式000005 -1\n 000007
# f2.write(line)#把查找到的行写入f2.
#f1.close()
#f2.close()
#data = []
import numpy as np
data = []
for line in open("E:/CODE/TX/dir.txt", "r"): # 设置文件对象并读取每一行文件
data.append(line)
#print(data)
#f3 = open('E:\CODE\TX\dir.txt','r')
for a in data:
# print(a)
#line3=line2[:-4] #读取每行去掉后四位的数#
im = Image.open('E:/CODE/wu3haomi/segJPEGImages/{}'.format(a[:-1]))#打开改路径下的line3记录的的文件名
im.save('E:/CODE/wu3haomi/chenxutiqude/{}'.format(a[:-1])) #把文件夹中指定的文件名称的图片另存到该路径下
im.close()
2. 重命名xml文件类别
# -*- coding: UTF-8 -*-
#程序功能:批量修改VOC数据集中xml标签文件的标签名称
import os
import xml.etree.ElementTree as ET
def changelabelname(inputpath):
listdir = os.listdir(inputpath)
for file in listdir:
if file.endswith('xml'):
file = os.path.join(inputpath,file)
tree = ET.parse(file)
root = tree.getroot()
for object1 in root.findall('object'):
for sku in object1.findall('name'):#查找需要修改的名称
if (sku.text == 'person'): #‘preName’为修改前的名称
sku.text = 'people'#‘TESTNAME’为修改后的名称
tree.write(file,encoding='utf-8')#写进原始的xml文件并避免原始xml中文字符乱码
else:
pass
else:
pass
if __name__ == '__main__':
inputpath = 'D:/download1/COCO2017/xml' #此处替换为自己的路径
changelabelname(inputpath)
3. png-jpg
# -*-coding:UTF-8-*-
# 日常使用代码:将某个文件夹及其子目录下的所有.png图片改为.JPG格式
import os
import re
path = r"E:\数据集\行人数据\person"
file_walk = os.walk(path)
fileNum = 0
filesPathList = []
for root, dirs, files in file_walk:
# print(root, end=',')
# print(dirs, end=',')
# print(files)
for file in files:
fileNum = fileNum + 1
filePath = root + '/' + file
# print(filePath)
filesPathList.append(filePath)
protion = os.path.splitext(filePath)
# print(protion[0],protion[1])
if protion[1].lower() == '.png':
print("正在处理:" + filePath)
newFilePath = protion[0] + '.JPG'
os.rename(filePath, newFilePath)
print('done')
4. 提取voc数据集制定类别数据
# -*-coding:UTF-8-*-
# 提取voc数据集指定类别数据
import os
import os.path
import shutil
fileDir_ann = r'E:/数据集/voc2012/VOCdevkit/VOC2012/Annotations/'
fileDir_img = r'E:/数据集/voc2012/VOCdevkit/VOC2012/JPEGImages/'
# 存放包含需要的类的图片
saveDir_img = r'E:/数据集/voc2012/person/'
if not os.path.exists(saveDir_img):
os.mkdir(saveDir_img)
names = locals()
for files in os.walk(fileDir_ann):
# 遍历Annotations中的所有文件
for file in files[2]:
print(file + "-->start!")
# 存放包含需要的类的图片对应的xml文件
saveDir_ann = r'E:/数据集/voc2012/person/xml/'
if not os.path.exists(saveDir_ann):
os.mkdir(saveDir_ann)
fp = open(fileDir_ann + file)
saveDir_ann = saveDir_ann + file
fp_w = open(saveDir_ann, 'w')
classes = ['aeroplane', 'bicycle', 'bird', 'boat',