我是一名业余计算机程序员,多年来一直在研究编程。我几乎没有受过正规培训;所以请原谅下面包含的代码效率低下。
我一直在使用 OpenCV 2.1 在 Python 2.6 中研究运动跟踪算法。我在运行 Windows XP SP2 的戴尔笔记本电脑上运行一切。我有一个不寻常的情况。几个月前,我有几个 AVI 输入和输出代码运行良好。我不记得在此期间更改了我计算机上的任何内容(尽管这一定不是真的)。现在,当代码尝试释放视频编写器构造时,我得到一个错误。
下面的代码用于生成具有不同大小的移动圆圈的电影。我用这些电影来测试我的运动跟踪代码。当我现在运行它时,它无法将电影保存在文件末尾。这是代码。
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 编解码器更改为我的计算机上没有安装的东西,我会收到一条更长的错误消息,指出缺少编解码器。
我确信有一个简单的答案,但我厌倦了把头靠在墙上。感谢所有评论。
谢谢乔什