在图像获取阶段,有时数据来源为视频文件,这时需要对视频文件采用OpenCV的VideoCapture和read函数进行帧图像读取,为了减少冗余的数据,可以设定跳帧截取视频图像。
import cv2
import os
from tqdm import tqdm
def save_image(video_path):
videos=os.listdir(video_path)
for video_name in tqdm(videos):#定义进度条
file_name=video_name.split('.')[0]
folder_name=file_name
os. makedirs(folder_name, exist_ok=True)
vc=cv2.VideoCapture(video_path+video_name)#读入视频文件
c=1
if vc. isOpened():#判断是否正常打开
rval, frame=vc.read()
else:(www.xing528.com)
rval=False
timeF=10#视频帧计数间隔频率
while rval:#循环读取视频帧
rval, frame=vc.read()
pic_path=folder_name+'/'
if(c%timeF==0):#每隔timeF帧进行存储操作
#存储为图像的文件名为:文件夹名_数字(第几个文件).jpg
cv2. imwrite(pic_path+file_name+'_'+str(c)+'.jpg',
frame)
c=c+1
cv2. waitKey(1)
vc. release()
save_img(video_path)
在视频文件的循环读取中利用了第二章列举的进度条显示类库tqdm,用户只需要封装任意的迭代器tqdm(iterator),就可以在Python循环中添加更加直观的进度提示信息。在引用tqdm类库之前需要使用pip install tqdm完成安装。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。