深度学习、图像处理中常用的功能函数
1.复制某个目录下的图像并重命名至新文件夹中:
在运行这个脚本之前,请替换source_folder和target_folder变量的值为你实际想要用的源和目标文件夹的路径
import os
import cv2
# 源文件夹和目标文件夹路径
source_folder = 'path/to/source/folder'
target_folder = 'path/to/target/folder'
# 如果目标文件夹不存在,则创建它
if not os.path.exists(target_folder):
os.makedirs(target_folder)
# 遍历源文件夹并排序
image_files = os.listdir(source_folder)
image_files.sort()
# 遍历图像列表,对满足后缀要求的文件进行重新读写
for index, image_file in enumerate(image_files):
if image_file.endswith('.png') or image_file.endswith('.jpg'):
image_name = os.path.join(source_folder, image_file)
image = cv2.imread(image_name)
cv2.imwrite('{}/{:0>05d}.jpg'.format(target_folder, index+1), image)
print("All images have been copied and renamed successfully.")
2.将文件夹下图像转为视频:
import os
import cv2
source_path = 'path/to/source/'
video_save_path = 'path/to/video/'
fps = 24 #视频每秒24帧
size = (1280, 720) #需要转为视频的图片的尺寸,必须和图像尺寸对应!!!!!!!!!!!!!!
if not os.path.exists(video_save_path):
os.makedirs(video_save_path)
filelists = os.listdir(source_path)
video = cv2.VideoWriter(video_save_path+'video.mp4', cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, size)
#视频按照上述设置初始化为mp4格式
filelists.sort() #排序使得视频顺畅
for index, item in enumerate(filelists):
if item.endswith('.png') or item.endswith('.jpg'):
#找到路径中所有后缀名为.png的文件,可以更换为.jpg或其它
image = os.path.join(source_path, item)
img = cv2.imread(image)
video.write(img)
print('Done')
video.release()
3.将不同的图像进行concat操作连在一起:
import cv2
import numpy as np
import os
# 图像路径
path0 = 'path/to/image0'
path1 = 'path/to/image1'
path2 = 'path/to/image2'
path3 = 'path/to/image3'
# 保存路径
path_save = 'path/to/save'
if not os.path.exists(path_save):
os.makedirs(path_save)
images0 = os.listdir(path0)
images1 = os.listdir(path1)
images2 = os.listdir(path2)
images3 = os.listdir(path3)
images0.sort()
images1.sort()
images2.sort()
images3.sort()
image_list0 = []
image_list1 = []
image_list2 = []
image_list3 = []
# 将每个文件下的图像打包成列表
for index, item in enumerate(images0):
if item.endswith('.png'):
#找到路径中所有后缀名为.png的文件,可以更换为.png或其它
image_name = os.path.join(path0, item)
img = cv2.imread(image_name)
image_list0.append(img)
for index, item in enumerate(images1):
if item.endswith('.png'):
#找到路径中所有后缀名为.png的文件,可以更换为.png或其它
image_name = os.path.join(path1, item)
img = cv2.imread(image_name)
image_list1.append(img)
for index, item in enumerate(images2):
if item.endswith('.png'):
#找到路径中所有后缀名为.png的文件,可以更换为.png或其它
image_name = os.path.join(path2, item)
img = cv2.imread(image_name)
image_list2.append(img)
for index, item in enumerate(images3):
if item.endswith('.png'):
#找到路径中所有后缀名为.png的文件,可以更换为.png或其它
image_name = os.path.join(path3, item)
img = cv2.imread(image_name)
image_list3.append(img)
for i in range(len(image_list1)):
#横向concat
image_two = np.concatenate((image_list0[i],image_list1[i]), axis = 1)
image_two2 = np.concatenate((image_list2[i],image_list3[i]), axis = 1)
#纵向连接
image_mix = np.vstack((image_two, image_two2))
cv2.imwrite('{}/{:04d}.png'.format(path_save, i+1), image_mix)