Захват кадров из видео: I-кадры против P-кадров

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

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-Frame , значит ли это, что он имеет более высокое качество, чем другие кадры, например P-кадры и B-кадры ? (по своей сути ключевые кадры не сжимаются, поэтому они должны иметь более высокое качество и меньше шума).

Пожалуйста, не делайте кросспост вопросов.

Ответы (3)

«I, B и P» не относятся к просмотренным кадрам, они относятся к закодированным, сохраненным формам кадров. Однако кадр закодирован в файле или потоке, когда он появляется на экране или извлекается как неподвижный, он представляет собой полный кадр, реконструированный из информации IBP по мере необходимости.

Внутренние кадры (I-кадры, ключевые кадры) не зависят от других кадров — они содержат полную информацию для восстановления изображения кадра. Нет необходимости в чтении других фреймов и вычислении из них.

Так что дело не в качестве , а в скорости . С другой стороны, чем больше внутренних кадров, тем больше размер файла. (Известный компромисс скорости для пространства.)

Внутренние кадры предпочтительно используются в большинстве медиаплееров для так называемого быстрого поиска (быстрого из-за пропуска необходимости чтения других кадров и вычислений из них) - см., например

View -> Options -> Tweaks -> Fast seek (on keyframe)

в Media Player Classic (из K-Lite Codec Pack ):

введите описание изображения здесь

Добавление большего количества внутренних кадров важно для относительно медленных устройств (например, смартфонов), потому что после перехода к невнутреннему кадру они воспроизводили безобразно окрашенное и прерывистое видео , пока встречаются со следующим внутренним кадром — так что для общей плотности 1 внутренний кадр на 250 кадров и 25 кадров в секунду пользователь может ждать почти 10 секунд для восстановления изображения.

Хорошая информация. Спасибо.

I-кадры — это несжатые кадры, на которые ссылаются кадры p и b для сжатия. Да у меня кадры более качественные.

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