使用OpenCV 2.1在python 2.6中保存AVI文件时出现问题

使用OpenCV 2.1在python 2.6中保存AVI文件时出现问题,python,opencv,ffmpeg,avi,Python,Opencv,Ffmpeg,Avi,我是一个业余的计算机程序员,多年来一直在胡搞编程。我几乎没有受过正规训练;因此,请原谅下面代码中的低效之处 我一直在使用OpenCV 2.1在Python2.6中开发运动跟踪算法。我在运行windows XP SP2的戴尔笔记本电脑上运行一切。我有一个不寻常的情况。几个月前,我有几个AVI输入和输出代码工作正常。我不记得在此期间在我的计算机上做过任何更改(尽管这一定不是真的)。现在,当代码试图释放video writer构造时,我遇到了一个错误 下面的代码用于生成具有不同大小的移动圆的电影。我用

我是一个业余的计算机程序员,多年来一直在胡搞编程。我几乎没有受过正规训练;因此,请原谅下面代码中的低效之处

我一直在使用OpenCV 2.1在Python2.6中开发运动跟踪算法。我在运行windows XP SP2的戴尔笔记本电脑上运行一切。我有一个不寻常的情况。几个月前,我有几个AVI输入和输出代码工作正常。我不记得在此期间在我的计算机上做过任何更改(尽管这一定不是真的)。现在,当代码试图释放video writer构造时,我遇到了一个错误

下面的代码用于生成具有不同大小的移动圆的电影。我用这些电影来测试我的运动跟踪代码。当我现在运行它时,它无法在文件末尾保存电影。这是代码

 Created on Apr 30, 2010

 @author: Josh
 '''
 #!/usr/bin/env python

 from opencv.cv import *  
 from opencv.highgui import *  

 if __name__ == '__main__':
     width = 640
     height = 480
     cvNamedWindow("Test Image", CV_WINDOW_AUTOSIZE);
     movie = cvCreateVideoWriter('C:\\Documents and Settings\\Josh\\Desktop\\Microcirc    working\\South.avi', CV_FOURCC('d','i','v','x'),24, cvSize(width,height),0)
     frame = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1);
     for m in range(0,5):
         n = m
         l = m
         for i in range(0,height):
             for j in range(0,width):
     #            i = int(array)
     #            j = int(element)
                 cvSet2D(frame, i, j, 255)

         xcenter = width/2
         ycenter = height/2
         print n
         cvCircle(frame, cvPoint(xcenter+l,ycenter+n), 10, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l,ycenter+n-60), 10, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l,ycenter+n+60), 10, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l+60,ycenter+n), 20, 0, -1)
         cvCircle(frame, cvPoint(xcenter-l+60,ycenter-n-60), 20, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l+60,ycenter+n+60), 20, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l-60,ycenter+n), 3, 0, -1)
         cvCircle(frame, cvPoint(xcenter+l-60,ycenter+n-60), 3, 0, -1)        
         cvCircle(frame, cvPoint(xcenter+l-60,ycenter+n+60), 3, 0, -1)

         cvShowImage("Test Image", frame)

         char = cvWaitKey(3)
         cvWriteFrame(movie, frame)

     print 'out of for loop'
     cvReleaseVideoWriter(movie)
     print 'writer released'
当我运行代码时,我从计算机得到以下响应

 0
 1
 2
 3
 4

 Output #0, avi, to 'C:\Documents and Settings\Josh\Desktop\Microcirc working\South.avi':
     Stream #0.0: Video: mpeg4, yuv420p, 640x480, q=2-31, 19660 kb/s, 90k tbn, 24 tbc
这就是全部错误代码。前面的整数是程序打印输出的计数(打印n)

我在网上查看了几个讨论板,发现错误代码是较长错误消息的一部分。如果我将AVI编解码器更改为我的计算机上没有安装的内容,我会收到一条更长的错误消息,说明编解码器丢失

我相信有一个简单的答案,但我厌倦了把头撞在墙上。所有评论都非常感谢

谢谢
Josh

这实际上是一个错误-看起来它只是在说明它使用的是什么编解码器。它产生了什么吗?这个消息是新的。我以前使用代码时,它没有这样做。它确实创建了一个文件,但我无法打开它。任何视频播放器都会发出“打开此文件时出错”之类的消息。