【发布时间】:2018-03-01 07:38:36
【问题描述】:
这是我第一次尝试制作视频文件,我似乎很笨拙。 受these instructions 的启发,我将多个图像放在一个视频中,我通过创建一个可以循环遍历包含图像的文件夹的函数来修改代码。但它需要的时间太长了。我以为是因为图片很多,但即使我只用两张图片做,它仍然会永远运行。
我没有收到错误消息,脚本永远不会停止。
谁能解释我的代码有什么问题?一定有什么我没有发现的愚蠢的东西,正在使它成为一个无限循环或什么的......
import cv2
import os
forexample = "C:/Users/me/Pictures/eg/"
eg = cv2.imread(forexample+'figure.jpg')
height , width , layers = eg.shape
print "ok, got that"
def makeVideo(imgPath, videodir, videoname, width,height):
for img in os.listdir(imgPath):
video = cv2.VideoWriter(videodir+videoname,-1,1,(width,height))
shot = cv2.imread(img)
video.write(shot)
print "one video done"
myexample = makeVideo(forexample,forexample, "example.avi", width, height)
cv2.destroyAllWindows()
myexample.release()
在windows机器上运行,Python 2.7.12,cv2 3.3.0
更新 最终使用 FFmpeg 创建了视频。
【问题讨论】:
-
注意,我还想知道它是否不接受所有图像格式。但我尝试了 jpg 和 png 都没有成功。
-
您是否尝试过与“说明”中相同的代码,我的意思是没有包含 2-3 个图像的 for 循环?此外,video 变量应该只创建一次,也就是说,在 for 之外。另外,我认为您应该在使用视频后发布视频(打印在哪里,在循环之外)。最后一件事您不需要销毁所有窗口,因为没有打开任何窗口