本文给大家介绍一类从视频里获取视频帧的办法,因为单核获取视频帧速率比较慢,因而接下来我们增强了线程同步的办法,感兴趣的朋友能够出手试一试
Python迅速获取视频帧(线程同步)
现在详细介绍一下一类从视频里获取视频帧的办法,因为单核获取视频帧速率比较慢,因而接下来我们增强了线程同步的办法。
1、获取视频帧
获取视频帧关键用了Opencv控制模块。
在其中:
camera=cv2.Videocapture(),函数公式主要通过启用笔记本电脑内置摄像头载入视频帧;
res,image=camera.read()函数公式通常是按帧载入短视频,传参“res”是布尔型,取得成功载入回到True,载入不成功回到False;
最终用cv2.imwrite()函数公式存放载入过的视频帧。
视频帧获取方式可参考本文
import cv2 import os def video_to_frames(video_path,outPutDirName): times=0 #提取视频的频率,每1帧提取一个 frame_frequency=1 #如果文件目录不存在则创建目录 if not os.path.exists(outPutDirName): os.makedirs(outPutDirName) #读取视频帧 camera=cv2.VideoCapture(video_path) while True: times=times+1 res,image=camera.read() if not res: print('not res,not image') break #按照设置间隔存储视频帧 if times%frame_frequency==0: cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image) print('图片提取结束') #释放摄像头设备 camera.release()
2、线程同步方式
线程同步的应用关键应用了threading库。
在其中:
threading.Thread()函数公式主要是用于启用线程同步,在其中主要参数“target”是上边需要用到的函数公式,主要参数“args”是上边函数的输入数据。
在其中相关线程同步的详细介绍一下,及其速率提高效果可参考本文
import threading threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start()
留意
1、extract_frame方方法的入参分别是:键入视频地址、导出视频地址、短视频fps、视频尺寸宽、视频尺寸高、短视频必须抽走的起点帧、短视频必须抽走的完毕帧。
3、整体代码
import cv2 import os import threading def video_to_frames(video_path,outPutDirName): times=0 #提取视频的频率,每1帧提取一个 frame_frequency=1 #如果文件目录不存在则创建目录 if not os.path.exists(outPutDirName): os.makedirs(outPutDirName) #读取视频帧 camera=cv2.VideoCapture(video_path) while True: times=times+1 res,image=camera.read() if not res: print('not res,not image') break if times%frame_frequency==0: cv2.imwrite(outPutDirName+''+str(times)+'.jpg',image) print('图片提取结束') camera.release() if __name__=="__main__": input_dir=r'D:datasetscow_dataset'#输入的video文件夹位置 save_dir=r'E:relate_codedataset'#输出图片到当前目录video文件夹下 count=0#视频数 for video_name in os.listdir(input_dir): video_path=os.path.join(input_dir,video_name) outPutDirName=os.path.join(save_dir,video_name[:-4]) threading.Thread(target=video_to_frames,args=(video_path,outPutDirName)).start() count=count+1 print("%s th video has been finished!"%count)
补充
还可以利用Python实现抽取剔除视频帧工具
代码
下面是使用opencv对视频中间几帧抽取的方法。
主要的思路是在读取frame的时候,顺便把帧写下来。
同时如果不是需要抽取剔除的帧,直接continue到下个循环。
样例代码如下,主要按照MP4格式进行处理。
#!/user/bin/env python #coding=utf-8 """ project:csdn-pro author:剑客阿良_ALiang file:test.py ide:PyCharm time:2022-06-30 17:55:48 """ import cv2 #视频抽帧 def extract_frame(video_path:str,result_path:str,fps,weight,height,start,end): fourcc=cv2.VideoWriter_fourcc(*'mp4v') videoWriter=cv2.VideoWriter(result_path,fourcc,fps,(weight,height)) vc=cv2.VideoCapture(video_path) if vc.isOpened(): ret,frame=vc.read() else: ret=False count=0#count the number of pictures while ret: ret,frame=vc.read() if start<=count<=end: count+=1 continue else: videoWriter.write(frame) count+=1 print(count) videoWriter.release() vc.release() if __name__=='__main__': extract_frame('C:UsersxxxDesktop123.mp4','C:UsersxxxDesktop114.mp4',25,640,368,119,125)
综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128691.html
摘要:将图片的处理方法放到视频中的每一帧,再加上弹幕飞过的效果,就完成了版的智能防挡弹幕。不知道站的实现方法是怎样,是否有人工干预,是否有预计算。 某天代码写得老眼昏花,去B站上摸鱼,突然发现奇怪的现象: showImg(https://segmentfault.com/img/remote/1460000017911829?w=600&h=284); 哟呵,B站竟然做了 视频前景提取 ,把...
摘要:这次开始学习从摄像头获取视频使用获取视频要获取视频,需要创建一个对象,参数可以是设备索引摄像头索引或视频文件的名称。 这次开始学习Getting Started with Videos 1从摄像头获取视频 使用cv2.VideoCapture()获取视频. cv2.VideoCapture(builtins.object) 要获取视频,需要创建一个VideoCapture对象,参数可以...
摘要:通过利用一系列利用视频局部性的优化,显著降低了在每个帧上的计算量,同时仍保持常规检索的高精度。的差异检测器目前是使用逐帧计算的逻辑回归模型实现的。这些检测器在上的运行速度非常快,每秒超过万帧。也就是说,每秒处理的视频帧数超过帧。 视频数据正在爆炸性地增长——仅英国就有超过400万个CCTV监控摄像头,用户每分钟上传到 YouTube 上的视频超过300小时。深度学习的进展已经能够自动分析这些...
摘要:摘要本文介绍使用和完成视频流目标检测,代码解释详细,附源码,上手快。将应用于视频流对象检测首先打开文件并插入以下代码同样,首先从导入相关数据包和命令行参数开始。 摘要: 本文介绍使用opencv和yolo完成视频流目标检测,代码解释详细,附源码,上手快。 在上一节内容中,介绍了如何将YOLO应用于图像目标检测中,那么在学会检测单张图像后,我们也可以利用YOLO算法实现视频流中的目标检...
摘要:身为一名前业务程序员和现前端程序员,这样的功能还是陌生的领域。需求使用加摄像头,通过人脸检测,完成自动拍照功能。在的屏幕上,显示摄像头的实时画面,要是画面中检测出人脸,则触发拍照。这样做的效果能够获得更高的,同时还能完成更远距离脸部的捕获。 因为项目原因,需要使用人脸检测(face detection)功能。身为一名前JAVA业务程序员和现前端程序员,这样的功能还是陌生的领域。那能不能...
阅读 889·2023-01-14 11:38
阅读 833·2023-01-14 11:04
阅读 685·2023-01-14 10:48
阅读 1887·2023-01-14 10:34
阅读 892·2023-01-14 10:24
阅读 750·2023-01-14 10:18
阅读 479·2023-01-14 10:09
阅读 519·2023-01-14 10:02