1. 第一步下载opencv
先激活虚拟环境:conda activate pytorch_gpu
(pytorch_gpu) C:\Users\14215>pip install opencv-python==3.4.1.15
Collecting opencv-python==3.4.1.15
Downloading opencv_python-3.4.1.15-cp36-cp36m-win_amd64.whl (33.6 MB)
|████████████████████████████████| 33.6 MB 2.2 MB/s
Requirement already satisfied: numpy>=1.11.3 in c:\users\14215\anaconda3\envs\pytorch_gpu\lib\site-packages (from opencv-python==3.4.1.15) (1.19.1)
Installing collected packages: opencv-python
Attempting uninstall: opencv-python
Found existing installation: opencv-python 4.4.0.44
Uninstalling opencv-python-4.4.0.44:
Successfully uninstalled opencv-python-4.4.0.44
Successfully installed opencv-python-3.4.1.15
(pytorch_gpu) C:\Users\14215>
2.导入代码,进行实验
# 导入所需要的库
import cv2
import numpy as np
# 定义保存图片函数
# image:要保存的图片名字
# addr;图片地址与相片名字的前部分
# num: 相片,名字的后缀。int 类型
def save_image(image, addr, num):
address = addr + str(num) + '.jpg'
cv2.imwrite(address, image)
# 读取视频文件
videoCapture = cv2.VideoCapture("E:\\MSU-MFSD\\scene01\\attack\\attack_client001_android_SD_ipad_video_scene01.mp4")
# 通过摄像头的方式
# videoCapture=cv2.VideoCapture(1)
# 读帧
success, frame = videoCapture.read()
i = 0
timeF = 1
j = 0
while success:
i = i + 1
if (i % timeF == 0):
j = j + 1
save_image(frame, './output/image', j)
print('save image:', i)
success, frame = videoCapture.read()
上面的timeF表示你想隔多少帧保存一张图片
我这里设置为1,表示每一帧都要保留
设置为1 的目的是生成所有的帧。用于比较视频和所有图片的大小
先来看看我的视频的信息:
由上图可知
总共的帧数大约在10*29.96=299.6帧
由下图可知实际有300帧
我们可以试着比较这300帧的总大小和原视频的大小
300张图片和一个10秒的视频
我初步判断是前者更大
根据上面的大小对比
我判断当数据集为视频的时候
如果不需要序列的知识
我感觉就可以隔多少帧取一帧
没必要每一帧都保存
我觉得像NUAA这种图片数据集,如下图所示
我感觉也是拍的视频然后自己截取的
至少可以看出来图片之间是不连续的
现在的很多视频数据集中的人基本上不会做什么动作
基本就是眨眼和轻微的晃头
所以我感觉没必要每一帧都保存,相邻帧的变化太小
每一帧都保留不仅浪费磁盘,而且也浪费转换时间
现在的问题就是到底保留多少帧才是理想的?