Первая проблема заключается в том, что вы пытаетесь создать видео с использованием черно-белых кадров, в то время как VideoWriter использует цвет по умолчанию. VideoWriter имеет 5-й логический параметр, в котором вы можете передать False, чтобы указать, что видео должно быть черно-белым.
Вторая проблема заключается в том, что размеры, которые ожидает cv2, противоположны numpy. Таким образом, размер должен быть (размер [1], размер [0]).
Возможной дополнительной проблемой является использование кода c. Мне никогда не удавалось заставить «X264» работать на моей машине, и вместо этого я использовал «mp4v» в качестве кода c и «.mp4» для типа контейнера, чтобы получить выходные данные в кодировке H.264 *. 1005 *
Вот результат после того, как все эти проблемы будут исправлены. Попробуйте это и посмотрите, работает ли это для вас:
import numpy as np
import cv2
size = 720*16//9, 720
duration = 2
fps = 25
out = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, (size[1], size[0]), False)
for _ in range(fps * duration):
data = np.random.randint(0, 256, size, dtype='uint8')
out.write(data)
out.release()