python实现读取视频帧速率,写入excel中
- 今天实现一个比较简单的,可能在处理视频是会常用到的读取视频帧速率的方法!
- 因为,数据量的原因个人习惯使用os.walk()方法获取所有的视频文件
- ps:若数据量非常大时,推荐文件夹中只有一种结尾的视频文集,要不就不适用endswith()方法获取文件。
1.获取视频路径,读取帧速率。
import os
import cv2
import openpyxl
def video_frame(dir_path, excel_path,# txt_name):
# 标识,为了写入excel换行使用
num = 0
for path, dri, file in os.walk(dir_path):
for name in file:
# 可以其他结尾的视频格式
if name.endswith('.mp4'):
path_dri = os.path.join(path, name)
cam = cv2.VideoCapture(path_dri)
_, fo = cam.read()
# framei = cv2.cvtColor(fo, cv2.COLOR_BGR2GRAY)
# 获取到视频的帧速率
fr = int(cam.get(5))
print("frame rate of stored video:", fr)
# 将获取的值 写入excel中,传入name的作用,是知道那个视频的帧速率
write_excel(name, fr, excel_path, num)
# 写入txt方法
# write_txt(txt_name, name, fr)
num += 1
2.获取的文件名和帧速率写入excel中(有点小问题,我没有在代码中实现创建execl的方法,execl需要自己提前创建,将创建的execl的路径传入即可)。
def write_excel(name, fr, file_path, num):
book = openpyxl.load_workbook(file_path)
sheet1 = book.worksheets[0]
# 写入第一列,mun+1换行
txt_A = 'A' + str(num + 1)
# 写入第二列,mun+1换行
txt_B = 'B' + str(num + 1)
fr_frames = str(fr) + '帧/秒'
sheet1[txt_A] = name
sheet1[txt_B] = fr_frames
book.save(file_path)
print('保存成功')
# 写入txt的方法
def write_txt(txt, name, fr_frames):
with open(txt, 'a', encoding='utf-8') as f:
fr_frames = str(fr_frames) + '帧/秒'
attrs = name + '\t' + fr_frames + '\n'
f.write(attrs)
3.调用函数测试代码
if __name__ == '__main__':
# 视频路劲
path = r''
# 创建的excel路径
excel_path = r''
txt_name = ''
video_frame(path, excel_path, #txt_name)
这样就可以完成对视频帧速率的读写操作了!!!