1、python遍历文件夹
首先介绍python下的 glob 模块:可以很方便的在进行图像批处理时遍历文件夹下所有图像。
#coding:utf-8
import glob as gb #导入glob模块
import cv2
# 返回该路径下所有的 jpg 文件的路径
img_path = gb.glob("/Users/steven/PycharmProjects/AI/RPN/*.jpg")
for path in img_path:
img = cv2.imread(path)
# 处理图像
cv2.imshow("img", img)
cv2.waitKey(1000)
这样就实现了文件夹下指定类型文件的遍历。但仅仅实现遍历功能一般并不能满足我们的要求,我们可能需要对一个文件夹下的图像批进行处理,再将处理后的图像按照原来的名称保存在另一个文件夹下,这时我们就需要用到分离文件目录的操、文件名、文件后缀的操作。
2、文件目录、文件名及文件后缀的分离及合并
在python下对文件目录和文件名进行分离和合并,可以借助 os 模块来轻松搞定。
#文件目录、文件名及文件后缀的分离
import os
file_path = "/Users/steven/PycharmProjects/AI/RPN/3425581_0.jpg"
(filepath,tempfilename) = os.path.split(file_path)
(filename,extension) = os.path.splitext(tempfilename)
filepath:文件的目录,即 /Users/steven/PycharmProjects/AI/RPN/
tempfilename:文件的全名,即 3425581_0.jpg
filename:文件的名字,即 3425581_0
extension:文件的扩展名,即 .jpg
#文件目录及文件名的合并
import os
img_savepath = "/Users/steven/PycharmProjects/AI/RPN/ROIS"
savepath = os.path.join(img_savepath, tempfilename)
savepath:处理后文件保存的完整路径
img_ savepath:处理后文件保存的目录文件夹名称
tempfilename:待保存的文件的全名
最后贴上完整的代码:
#coding:utf-8
import cv2
import numpy as np
import glob as gb
#对img_path目录下所有图像进行操作,处理后文件保存在img_ savepath目录下
img_path = gb.glob("/Users/steven/PycharmProjects/AI/RPN/*.jpg")
img_ savepath = "/Users/steven/PycharmProjects/AI/RPN/ROIS"
if __name__ == '__main__':
for path in img_path:
#分离文件目录,文件名及文件后缀、
(img_dir, tempfilename) = os.path.split(path)
img = cv2.imread(path)
#对图像进行处理
cv2.imshow("ROIS", img)
# savepath为处理后文件保存的全路径
savepath = os.path.join(img_savepath, tempfilename)
cv2.imwrite(savepath, img)
cv2.waitKey(1000)