Я пытаюсь записать различные кадры в видеофайлах с кодировкой x264 в файлы pngpython), а затем сравнить их качество:

cap = cv2.VideoCapture(filename);
//get frame_number for saving, and save the frame
cap.set(cv2.CAP_PROP_POS_FRAMES,frame_no);
ret, frame = cap.read()

cv2.imwrite(dir_path+'uniform_frame_'+str(frame_no)+".png", frame);

Теперь мне стало интересно, получаю ли я I-кадр, означает ли это, что он имеет более высокое качество, чем другие кадры, например, P-кадры и B-кадры? (по сути, ключевые кадры не сжимаются, поэтому они должны иметь более высокое качество и меньше шума).

1 ответ1

2

Все кадры в кодированном видеопотоке сжимаются; I-кадр просто указывает, что изображение может быть восстановлено без ссылки на другие кодированные изображения.

Теперь, поскольку I-кадры обычно используются в качестве ссылок для других изображений, интеллектуальный кодер легко справляется с квантованием, поэтому они обычно имеют более высокое качество. В P-кадрах применяется больше квантования, а в B-кадрах еще больше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .