利用python,按照txt文件读取指定目录下的特定图像(读取txt文件中出现名称的图像),进行复制并修改图像名称。
read()、readline()、readlines()三者差异:参考python中read() readline()以及readlines()区别 - 知乎
- read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型。
- readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型。
- readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型。
txt文件中的图像名称 & 原目录文件下的图像名称:
train.txt: train_0.png, train_1.png, train_2.png, train_3.png, ……
label文件夹(原始):0.png, 1.png, 2.png, 3.png, 4.png, 5.png,……(很多很多)
label2文件夹(生成):train_0.png, train_1.png, train_2.png, train_3.png, ……(部分)
代码一:
# -*- coding: UTF-8 -*-
#!/usr/bin/env python
import re
from PIL import Image
import numpy as np
import os
data = []
path1=r'F:\all_date\WHU\train.txt' # txt文件路径
path_img1=r'F:\all_date\WHU\label' # 原图像文件路径
path_img2=r'F:\all_date\WHU\label2' # 保存图像新路径
with open(path1,'r') as fr:
data = fr.readlines()
data = ''.join(data).strip('\n').splitlines()
# ''.join() list转为str
# s.strip(rm) 删除s中开头结尾处的rm字符
# .splitlines() 将字符串返回列表
# print(data)
for name in data:
name1=name.split('_')[1]
path_old=os.path.join(path_img1,name1)
path_new=os.path.join(path_img2,name)
im=Image.open(path_old)
im.save(path_new)
im.close()
代码二:
import skimage.io as io
import os
data_dir='C:/Users/Administrator/Desktop/A'
str=data_dir + '/*.jpg'
coll = io.ImageCollection(str)
print(len(coll))
#io.imshow(coll[1])
#io.show()
file_list= []
for file in os.listdir(data_dir): #file为current_dir当前目录下图片名
if file.endswith(".jpg"): #如果file以jpg结尾
write_name = file #图片路径 + 图片名 + 标签
file_list.append(write_name) #将write_name添加到file_list列表最后
sorted(file_list) #将列表中所有元素随机排列
#print(file_list[1])
result=[]
with open('C:/Users/Administrator/Desktop/C/B.txt','r') as f:
for line in f:
line=line.strip('\n')
result.append(line)
print(result)
for i in range(0,4):
for j in range(0,2):
print("i=",i)
print("j=",j)
print(file_list[i])
print(result[j])
if file_list[i]==result[j]:
#print(j)
print(result[j])
#print(file_list[j])
io.imsave("C:/Users/Administrator/Desktop/B/"+result[j],coll[i])
代码三:
# -*- coding: UTF-8 -*-
#!/usr/bin/env python
import sys
import re
from PIL import Image
sys.path.append('E:\\test')
#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:/test/image.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:/test/{}'.format(a[:-1]))#打开改路径下的line3记录的的文件名
im.save('E:/test/1/{}'.format(a[:-1])) #把文件夹中指定的文件名称的图片另存到该路径下
im.close()