Я пытаюсь сделать видео из ppm-изображений, используя I Python (python 2.7).
Я написал этот код:
import cv2
import glob
img1 = cv2.imread('C:/Users/Joseph/image0.ppm')
height, width, layers = img1.shape
video1 = cv2.VideoWriter('video1.avi', -1, 1, (width, height))
filenames = glob.glob('C:/Users/Joseph/*.ppm')
for filename in filenames:
print(filename)
img = cv2.imread(filename)
video1.write(img)
cv2.destroyAllWindows()
video1.release()
Видео создано, но пусто size=0B
и его нельзя открыть.
Нет сообщения об ошибке.
Я подозреваю, что проблема заключается в написании местоположения, поскольку print(filename)
дает:
C: / Users / Joseph \ image0.ppm
C: / Users / Joseph \ image1.ppm
C: / Users / Joseph \ image2.ppm
C: / Users / Joseph \ image2.ppm
вместо того, что я ожидал: C:/Users/Joseph/image0.ppm
Не могли бы вы помочь мне, пожалуйста?
РЕДАКТИРОВАТЬ: Тип файла type: GIMP 2.10.14 (.ppm)
. Может ли проблема быть связана с этим типом ppm?
РЕДАКТИРОВАТЬ 2: Кажется, что проблема не связана напрямую с .ppm
.
Действительно, я пытался (с учетом ответа Rotem):
import cv2
import glob
i = cv2.imread('C:/Users/Joseph/image0.ppm')
cv2.imwrite('C:/Users/Joseph/image.jpg',i)
img1 = cv2.imread('C:/Users/Joseph/image.jpg')
height, width, layers = img1.shape
# Set FOURCC code to '24BG' - '24BG' is used for creating uncompressed raw video
video1 = cv2.VideoWriter('video1.avi', cv2.VideoWriter_fourcc('D','I','B',' '), 1, (width, height))
filenames = glob.glob('C:/Users/Joseph/*.ppm')
try:
for filename in filenames:
print(filename)
img = cv2.imread(filename)
cv2.imwrite('C:/Users/Joseph/a.jpg',img)
img=cv2.imread('C:/Users/Joseph/a.jpg')
# Display input image for debugging
cv2.imshow('img', img)
cv2.waitKey(1000)
video1.write(img)
except:
print('An error occurred.')
cv2.destroyAllWindows()
video1.release()
И это тоже не работает. И я не получаю никакого изображения.
, поэтому кажется, что это ошибка в моем cv2 для видео. JPG хорошо создан.
РЕДАКТИРОВАТЬ: решение.
В духе ответа Ротема я попытался: cv2.VideoWriter_fourcc('M','J','P','G')
и это сработало!