Python / Open CV:从cos图像序列创建视频,视频为空

时间:2016-12-16 16:06:53

标签: python python-2.7 opencv video

我尝试使用我创建的cos图像创建视频,但我制作的avi视频是空的。

我必须使用cv2.VideoWriter()。通过创建的视频正确显示帧是0字节。你知道怎么解决这个问题吗?

如果我从avi视频中获得一个帧,那么我就会成功创建一个新的可播放视频。

提前谢谢!

我的代码是

import cv2
import math
import numpy as np

N=128
Icos_1 = np.zeros((N,N))
Icos_2 = np.zeros((N,N))
for i in range(0,N):
    for j in range(0,N):
        myPi = 2*math.pi/N
        th1 = 1*i + 3*j
        th2 = 2*i + 4*j
        Icos_1[i,j] = 255*(math.cos(myPi*th1))
        Icos_2[i,j] = 255*(math.cos(myPi*th2))
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('sample_video.avi',fourcc, 25.0, (128,128))

or x in range(1, 100):
    if (x % 2) != 0:
        frame = Icos_1
    else:
        frame = Icos_2

    out.write(np.uint8(frame))
    cv2.imshow('frame',np.uint8(frame))
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release video objects if job is finished
out.release()

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

我必须在out = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128))

中使用0作为编解码器

完整的代码是:

import cv2
import math
import numpy as np

N=128
Icos_1 = np.zeros((N,N))
Icos_2 = np.zeros((N,N))
for i in range(0,N):
    for j in range(0,N):
        myPi = 2*math.pi/N
        th1 = 1*i + 3*j
        th2 = 2*i + 4*j
        Icos_1[i,j] = 255*(math.cos(myPi*th1))
        Icos_2[i,j] = 255*(math.cos(myPi*th2))

out = cv2.VideoWriter('sample_video.avi',0, 25.0, (128,128))

or x in range(1, 100):
    if (x % 2) != 0:
        frame = Icos_1
    else:
        frame = Icos_2

    out.write(np.uint8(frame))
    cv2.imshow('frame',np.uint8(frame))
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release video objects if job is finished
out.release()