尝试了很多选择,但我的想法都用完了。我希望这里有人能帮上忙。我正在尝试用python编写一些代码,可以从视频(.avi或.wmv)中提取帧(比如每十帧)并创建图片(最好是.jpg-但其他格式也可以)。我没有成功,我想知道是否有人可以通过提供一个替代方案来帮助我解决我的问题,我尝试过但失败了。
我尝试过PyMedia (他们的教程http://pymedia.org/tut/src/dump_video.py.html中的示例不起作用-程序在查找视频编解码器时会崩溃):
#dm= muxer.Demuxer( inFile.split( '.' )[ -1 ] ) This line does not work
dm= muxer.Demuxer( 'avi' ) #This modified line does seem to work however
i= 1
inFile = "VideoTest.avi"
f= open( inFile, 'rb' )
s= f.read( 400000 )
r= dm.parse( s )
v= filter( lambda x: x[ 'type' ]== muxer.CODEC_TYPE_VIDEO, dm.streams )
v_id= v[ 0 ][ 'index' ]
print 'Assume video stream at %d index: ' % v_id
c= vcodec.Decoder( dm.streams[ v_id ] ) #this is the point where it crashes.我已经尝试过Pythonv2.2forPythonv2.2,但也不能工作(我可以让OpenCV的大部分工作--除了我需要的一个函数CaptureFromFile不能工作)。我相信这个函数不起作用的原因是因为在Windows上它需要highGui才能运行,而且出于某些原因,python和opencv即使在正确的目录中也找不到highgui。我也理解OpenCV在寻找和应用正确的视频编解码器方面有问题,所以我不确定是哪一个导致了我的问题。
我看过pyFFMPEG,但它的最后一个构建版本是2.6,我运行的是Python2.7。
我在Windows Vista和Windows7机器上运行这个程序,在C:\上加载了Python2.7和OpenCV 2.2,并在C:\ Python27 \Libs\site- packages中安装了所有其他python包(pygames,pymedia,numpy,scipy) ...“我从可执行文件下载和安装,所有的包都是为Python2.7构建的。我的Path变量包括Python27和OpenCV,我有一个PYTHONPATH变量。
感谢您的任何想法或建议。
发布于 2013-11-08 00:58:20
我尝试了以下方法来提取每个帧作为单独的图像:
import cv2
file_path = "some\path\to\the\file.avi"
video_object = cv2.VideoCapture(path)
success = True
while success:
success,frame = video_object.read()
if success:
cv2.imwrite(path[:-4]+"_"+str(i)+".jpg",frame)
print("Done!")此脚本将每个帧作为图像保存在与源文件相同的文件夹中。这可能不是最有效的方法,但它对我来说是有效的!我知道我的字符串解析不是最被推荐的,但它是有效的。video_object.read()返回两个对象。第一个是指示读取操作是否成功的bool,第二个是图像。
关于视频编解码器可能有一些限制,我不知道。我使用的是Python2.7和2013年11月7日最新版本的openCV和Numpy。
https://stackoverflow.com/questions/8900637
复制相似问题