Разница в размере кадра до и после создания видео - PullRequest
0 голосов
/ 31 марта 2020

Я создаю видео из изображений с использованием Opencv.

dim=(width, height)
fourcc = cv2.VideoWriter_fourcc(*'X264')
out_d = cv2.VideoWriter(save_path_depth,fourcc, fps, dim)

После создания видео я читаю видео и извлекаю кадры из этого видео

while(cap.isOpened()):
    ret, frame = cap.read()

    if ret == False:
        break
    print(frame)
    cv2.imwrite(output+"/"+ str(i).zfill(1) + ".png", frame)      
    i+=1

cap.release()

Размер кадра почти в два раза больше размера кадра я изначально использовал для создания видео. Кроме этого, когда я делаю сравнение между кадрами, некоторые кадры полностью отличаются от их исходных кадров. Может кто-нибудь объяснить, что может быть причиной этого.

1 Ответ

0 голосов
/ 31 марта 2020

Это несправедливое сравнение.

Ваш исходный ввод мог соответствовать PNG и, следовательно, эффективно сжиматься.

Фактические параметры кодирования не отображаются, но вы, скорее всего, испытываете потеря генерации из-за использования формата с потерями. Изображения постоянно изменяются с помощью артефактов кодирования. Эти артефакты кодирования связаны с методами, которые помогают сделать видео небольшим по размеру файла. При просмотре видео они предназначены для того, чтобы их было труднее заметить. Однако перекодирование из H.264 обратно в PNG должно включать эти шумовые артефакты в новые изображения, что увеличивает сложность, усложняет сжатие и, следовательно, увеличивает размер файла. PNG плохо справляется с шумом.

Во-вторых, происходит преобразование цветового пространства RGB в YUV, что также может привести к различиям.

...