提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
CNN+SVM的第一步,通过视频提取帧。
提示:以下是本篇文章正文内容,下面案例可供参考
一、前期准备?
方法一、测试题要求使用神经网络判断视频中人物的心情,在神经网络方面,Python具有较广的应用范围和较多的包,重新搭建测试环境,使用包管理工具Anaconda。随后为提取视频画面,用anaconda来下载opencv-python(cv2)的包,如果国外服务器较不稳定。可以用了清华源镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python。使用了Anaconda自带的jupyter作为编辑器。
方法二、使用matlab
二、使用步骤
1.使用Python
import cv2
import os
代码如下(示例):
# 遍历文件夹下所有文件
for file in os.listdir('./'):
# 若文件名以.mp4结尾
if(file.endswith('.mp4')):
# 截取文件名中 begin:end-4 的内容作为文件夹,实际为截取.mp4前的内容
dirname=file[:-4]
print('获取视频截图:'+dirname)
# 若没有文件夹则创建
if not os.path.exists(dirname):
os.makedirs(dirname)
# cv2读取file
video = cv2.VideoCapture(file)
# 每秒fps*5秒
fps = int(video.get(cv2.CAP_PROP_FPS)*5)
if video.isOpened():
rval, frame = video.read()
else:
rval = False
number=1
while rval:
rval, frame = video.read()
if number%fps==0:
print(number)
# 在对应文件名的目录下写图片
cv2.imwrite(dirname+'/'+str(int(number / fps)) + '.jpg', frame)
number += 1
# 下一帧
cv2.waitKey(1)
# 关闭
video.release()
print('图片截取完成')
2.使用MATLAB获取
代码如下(示例):
clc;
clear all;
close all;
%% 将视频逐帧保存为jpg图片
obj = VideoReader('F:\mh\rgb.avi');%输入视频位置
numFrames = obj.NumberOfFrames;% 帧的总数
numzeros= 4;%图片name长度
nz = strcat('%0',num2str(numzeros),'d');
for k = 1 : numFrames% 读取前15帧
frame = read(obj,k);%读取第几帧
id=sprintf(nz,k);
imwrite(frame,strcat('F:\mh\data\',id,'.jpg'),'jpg');% 保存帧
end
总结
搬砖的第一步