提取视频某一帧,视频帧数提取不出来,提取视频的每一帧
**
制作视频数据集(一):捕捉视频帧* *
1.智能播放器拦截视频帧,直接下载用智能播放器拦截就行了。我觉得拦截这个软件比较简单,但是我下载后,拦截的页面无法显示文件,我就做不到了。不知道怎么回事,但是我会抓图,会手动截帧。太麻烦了。
2.ffmpeg截取视频帧。链接。
抓拍很方便,抓拍的图片会自动保存在c盘的用户文件夹里,但是我想把图片保存在自定义文件夹里,不会设置。
3.python-以指定的帧间隔截取视频,并将图片保存到指定位置。链接。
# -*-编码:utf-8 -*-#!usr/Shuxin Panda/python import cv2 import OS . path #使用opencv定期捕获视频帧并将其保存为图片file path=r c:\ \ Users \ \ Pippy \ \ Desktop \ \ Datasets \ \ MP4 \ \ anomaly _ videos _ part _ 2 \ \ Fighting #视频所在的文件夹path dir=OS . listdir(file path)a=1 # pathdir中所有目录的图片计数:videopath=r c: \ \ users \ pippy \ \ Desktop \ \ Datasets \ \ MP4 \ \ Anony _ Videos _ Part _ 2 \ \ Fighting \ \ all dir print(video path)# before VC=cv2 . video capture(video path)#读入视频文件C=1 ifvc.isopen (): rval,Frame=VC . Read()else:rval=false timer=25 #视频帧计数间隔的频率while rval:# Recycle读取视频帧rval,Frame=VC . Read()if(C % timer==0):# Store cv2 . im写入每个定时器帧(r c jpg ,Frame) #另存为image A=A1C=c1cv 2 . waitkey(1)VC . release()不断报错:Error:OpenCV(4 . 2 . 0)C:\ Projects \ OpenCV-Python \ OpenCV \ Modules \ IMG编解码器\ src \ loadsave.cpp. _img.empty()在函数 cv:imwrite 中
解决方法:
1.确保文件路径不包含中文名称和非法字符。
2:路径前面加R吗?如果没有,补充一下。
3:路径末尾有没有加 \ ?如果没有,补充一下。
4:前三个我都试过了,但是运行了一段时间,还是报同样的错误。保存第15个视频的时候出现了错误,我就把第15个频率删除了,代码好像正常。可能这个视频有问题。如果能解决最好,如果不能解决,再试试把imwrite改成imencode。后来又遇到了这个问题,不知道怎么突然就发生了。反正这些方法轮流换。
4将多个视频的视频帧保存在多个文件夹下的一个文件夹中:链接。
这是一帧一帧捕捉的。
#-*-编码:utf-8-*-从sk镜像导入cv2导入io导入OS #路径视频所在文件夹的位置videos _ Path= c:/users/pippy/desktop/datasets/MP4/New _ anonymous _ videos _ part _ 2/fighting #从视频文件夹中获取每个视频的名称videos _ name=OS . listdir(videos _ Path)#视频帧图片的起始编号#遍历所有视频对于j, Inenumerate (videos _ name): #下面两行代码的作用是创建一个文件夹path= c:/users/pippy/desktop/datasets/picture/video _ picture _ % s %(J1)OS . makers(path)#获取每个视频的路径video _ path=OS . path . join(videos _ path,I) #如果遇到文件夹, 跳过if OS . path . isdir(video _ path):continue VC=cv2 . video capture(video _ path)#参数0表示第一个摄像头#判断视频是否打开if vc.isOpened(): rval,Frame=VC . read()print( open )else:rval=false print( unopen )#测试时,检查视频大小=(int(VC . get(cv2 . cap _ prop _ Frame _ width)), int(VC . get(cv2 . cap _ prop _ Frame _ height))print( size: REPR(size))A=1c=1 timeF=100 while rval:#循环读取视频帧rval,Frame=VC . Read()if(c % timeF==0):# store cv2 . im write(r c:/users/pippy/desktop/datasets/picture/video _ picture _ % s/% s . jpg %(J1,a) The frame) #存储为图像A=A1C=C1CV2。 等待键(1) VC。释放()CV2。破坏性地Windows()这可以实现提取多少帧。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。