1.将图片排序
(1)视频中截取图片
每隔一秒截取视频并保存为图片,可以使用 OpenCV
库。下面是一个示例代码,它将视频中的每一秒保存为一张图片:
import cv2
import os
# 设置视频文件路径
video_path = r"D:\**\**.mp4"
output_folder = r"D:\**"
# 如果输出文件夹不存在,则创建
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 打开视频文件
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print("无法打开视频文件。")
exit()
# 获取视频的帧率
fps = int(cap.get(cv2.CAP_PROP_FPS))
print(f"视频帧率: {fps}")
# 计算每秒的帧数
frame_interval = fps
frame_count = 0
saved_image_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("视频读取结束或发生错误。")
break
# 仅保存每一秒的帧
if frame_count % frame_interval == 0:
saved_image_count += 1
image_path = os.path.join(output_folder, f'image_{saved_image_count}.jpg')
cv2.imwrite(image_path, frame)
print(f"保存图片: {image_path}")
frame_count += 1
# 释放视频捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()
print("视频截取完成。")
(2)照片排序
我所需要的数据集网上没有,只能自己搜寻,搜集了1000张左右,格式和名字、大小并不统一。
在Python中编写一个脚本,在Visual Studio中运行,并处理文件夹中不同格式的照片(如 .jpg
, .png
, 等),按顺序将它们重命名为从 1
到 1000
。
import os
# 指定照片所在的文件夹路径
folder_path = "D:\\***\\***"
# 获取文件夹中所有文件的列表
file_list = os.listdir(folder_path)
# 过滤出照片文件(jpg和png)
photo_files = [f for f in file_list if f.endswith(('.jpg', '.jpeg', '.png'))]
# 按字母顺序排序文件
photo_files.sort()
# 遍历文件并重命名
for i, filename in enumerate(photo_files):
# 获取文件扩展名
file_extension = os.path.splitext(filename)[1]
# 生成新的文件名,例如1.jpg, 2.png, ...
new_name = f"{i + 1}{file_extension}"
# 生成完整的旧文件路径和新文件路径
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_name)
# 重命名文件
os.rename(old_path, new_path)
# 如果超出1000张图片,提前停止
if i + 1 == 1000:
break
print("over")
2.将图片的格式统一为jpg
使用 Python 的 PIL
(Python Imaging Library)库,结合 os
库来批量处理这些图像文件。以下是示例代码,可以将所有 .jfif
、.png
等格式的图片转换为 .jpg
格式:
import os
from PIL import Image
# 指定照片所在的文件夹路径
folder_path = r"D:\***" # 替换为你的文件夹路径
# 获取文件夹中所有文件的列表
file_list = os.listdir(folder_path)
# 遍历文件夹中的所有文件
for filename in file_list:
# 获取文件扩展名
file_extension = os.path.splitext(filename)[1].lower()
# 检查文件是否为图像格式(jpg、jfif、png 等)
if file_extension in ['.jpg', '.jpeg', '.jfif', '.png']:
# 打开图像文件
img = Image.open(os.path.join(folder_path, filename))
# 将图像转换为RGB模式,以确保兼容性
img = img.convert('RGB')
# 生成新的文件名,统一为 jpg 格式
new_filename = os.path.splitext(filename)[0] + '.jpg'
# 保存图像为 jpg 格式
img.save(os.path.join(folder_path, new_filename), 'JPEG')
# 如果文件扩展名不是 jpg,则删除原文件
if file_extension != '.jpg':
os.remove(os.path.join(folder_path, filename))
print("所有图片已成功转换为 jpg 格式。")