我们在做深度学习的时候几乎都需要用到txt文件,还有对应的图片名,这个时候如果数据就几十个还好,如果再增多的话,我们就受不了了,下面我就记录顺便保存一下代码
txt_file="C:\\Users\\ljs\\Desktop\\rename\\test_501.txt" #这里是txt文件的地址
a=[] #创建一个列表
with open(txt_file, 'r', encoding='utf-8') as file:
for c in file.readlines():
a.append(c.strip('\n').split(' ')[0]) #读取文件并放入列表
#print(a)
path = 'C:\\Users\\ljs\\Desktop\\total' #从哪里读取图片
path_1 = 'C:\\Users\\ljs\\Desktop\\y' #把找到的图片存放在哪里
for filename in a:#遍历列表
#print(type(filename))#字符串型
img_path = path + '/' + filename #把图片的名字和地址组合
print(img_path)
img = cv2.imread(img_path) #根据图片的地址去读取图片
save_name = path_1 + '/' + filename # 图片保存到另外的一个地方的地址和图片的名字
cv2.imwrite(save_name,img) #保存图片
首先读取txt文件中的每行时会读取到一个换行符\n。这个是我们不需要的,所有我们这里把他给strip掉,由于我读取的txt文件的每行不单单是图片的名称,所以我这里是用了split把图片名称后边的内容删掉,然后就只剩下图片名,最后再放入列表中,供接下来的读取。
我们遍历保存好的列表。列表里面是图片的名字(如果你没有分割错误的话),这个读取后是字符串型的,接下来我们要获取从哪里读取图片的文件地址,把地址与从列表里面遍历到的图片名相组合,然后就得到了每张图片的地址,我们用cv2.imread()去读取图片,最后把它保存,如果你不想改变原来图片的名字话直接按照上面的格式保存就行,如果想改变名字,那么就把path_1 + '/' + filename
中的filename成你想改变的名字(例如:1,2,3,…)。保存的时候每张图片的名字一样哦