Я хочу прочитать и показать видео, используя opencv. Я записал с Direct-show, видео имеет кодек UYVY (4: 2: 2), так как opencv не может прочитать этот формат, я хочу преобразовать кодек в цветовую модель RGB, я прочитал о ffmpeg и хочу узнать, возможно ли это покончить с этим? если нет, если вам предложение, я буду благодарен.
Как Я объяснил тебе раньше, OpenCV может читать некоторые форматы YUV, в том числе UYVY (спасибо FFmpeg / GStreamer). Так что я верю cv::Mat
Вы получаете от камеры уже преобразованный в цветовое пространство BGR, которое OpenCV использует по умолчанию.
Я изменил мой предыдущая программа сохранить первый кадр видео в формате PNG:
cv::Mat frame;
if (!cap.read(frame))
{
return -1;
}
cv::imwrite("mat.png", frame);
for(;;)
{
// ...
И изображение идеально. Выполнение команды file
на mat.png показывает:
mat.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced
Более точный тест — сбросить весь frame.data()
на диск и откройте его с помощью редактора изображений. Если вы делаете это, имейте в виду, что каналы R и B будут переключаться.
Других решений пока нет …