Ваше видео вращается с настройками метаданных и не кодируется в формате 1080x1920.
Наиболее вероятное объяснение состоит в том, что разрешение видео составляет 1920x1080 (ширина = 1920 и высота = 1080) [это стандартное разрешение видео FullHD].
Также возможно, что видео снято с камерой, повернутой на 90 градусов.
Вместо того, чтобы декодировать видео, поворачивать каждый кадр и кодировать кадр, можно добавить метаданные в видеофайл, которые помечают проигрыватель вращать видео при воспроизведении.
Добавление метаданных более эффективно (занимает минимальное время) и может иметь лучшее качество (поскольку экономит этапы декодирования и кодирования).
Вот пример поворота mp4 путем установки метаданных с использованием FFmpeg : Поворот mp4-видео без перекодирования .
Когда OpenCV читает видеокадр, он читает его в исходной ориентации (1920x1080, а не 1080x1920).
Это общее соглашение, касающееся большинства метаданных видео. OpenCV предполагает, что вы знаете, что флаг метаданных установлен на «повернутый», и предполагает, что вы отвечаете за поворот кадра перед его отображением (ваш * Программа 1061 * предполагает выполнение работы игроков).
Вот пример создания примера файла видео mp4 с использованием FFmpeg (в командной строке):
ffmpeg -y -r 10 -f lavfi -i testsrc=rate=10:size=198x108 -t 5 -c:v libx264 vid0.mp4
Вот пример поворота видео с помощью установки метаданных:
ffmpeg -i vid0.mp4 -c copy -metadata:s:v:0 rotate=90 vid90.mp4
В следующем коде Python форма обоих видео одинакова: (108, 198, 3)
(ширина = 198, высота = 108):
import cv2
from matplotlib import pyplot as plt
# video_file_path = 'vid0.mp4'
video_file_path = 'vid90.mp4'
cap = cv2.VideoCapture(video_file_path)
frames = []
while(cap.isOpened()):
ret, frame = cap.read()
if ret:
frames.append(frame)
else:
break
plt.imshow(frames[0])
Вы можете проверить видео метаданные с помощью инструмента mediainfo :

Читать метаданные в Python сложнее, чем я думал (я никогда не пробовал ).
Вы можете найти решение здесь .
[Теперь я понял, что ваш вопрос, вероятно, дублируется].
Первый кадр видео vid90
в MP C -H C Плеер:

Первый кадр видео vid90
в Python (matplotlib):
