经常用到,记录一下:
视频抽帧:
import os
import cv2
import shutil
VIDEO_PATH = 'video/02.mp4' # 视频地址
EXTRACT_FOLDER = 'img/img02' # 存放帧图片的位置
EXTRACT_FREQUENCY = 20 # 帧提取频率
def extract_frames(video_path, dst_folder, index):
# 主操作
video = cv2.VideoCapture()
if not video.open(video_path):
print("can not open the video")
exit(1)
count = 1
while True:
_, frame = video.read()
if frame is None:
break
if count % EXTRACT_FREQUENCY == 0:
save_path = "{}/{:>03d}.jpg".format(dst_folder, index)
cv2.imwrite(save_path, frame)
index += 1
count += 1
video.release()
# 打印出所提取帧的总数
print("Totally save {:d} pics".format(index - 1))
def main():
# 递归删除之前存放帧图片的文件夹,并新建一个
try:
shutil.rmtree(EXTRACT_FOLDER)
except OSError:
pass
if not os.path.exists(EXTRACT_FOLDER):
os.mkdir(EXTRACT_FOLDER)
# 抽取帧图片,并保存到指定路径
extract_frames(VIDEO_PATH, EXTRACT_FOLDER, 1)
if __name__ == '__main__':
main()
图片批量重命名:
# -*- coding:utf8 -*-
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
self.path = r'E:\video\newData\images' #要重命名的图片所在的文件夹
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
print(str(i))
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), '{:>03d}.jpg'.format(i)) # 命名格式
try:
os.rename(src, dst)
# print('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
print('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()