Манипулирование индивидуальной информацией о цвете для каждого пикселя видеофайла

#c# #java #video-processing #pixels

#c# #java #обработка видео #пиксель

Вопрос:

Я комфортно владею несколькими языками программирования (сильнее в C #, C, Java, чем в других), поэтому, пожалуйста, не стесняйтесь предлагать тот, который предоставит мне способ чтения в (предпочтительно несжатом) видеофайле и просмотра цвета каждого пикселя в кадре для каждого кадра. Итак, я имею в виду, скажем, при отображении в 1 пиксель тривиально маленького видео, которое выполняется в течение 5 кадров, существуют ли стандартные библиотечные классы или способы, которыми я могу получить доступ к 5 цветам, которые один пиксель будет показывать во время видео?

Никогда не работая с видео должным образом, я не слишком разбираюсь в структуре данных, которую видеофайл будет использовать для представления информации о цвете, или как можно было бы этим манипулировать!

Большое спасибо

Комментарии:

1. В .net вы можете захотеть заглянуть в nforge. Он предлагает некоторые материалы, связанные с видео, но я не знаю, есть ли в нем то, что вы хотите.

Ответ №1:

Для обработки несжатых видеоданных (в том виде, в каком они могут сниматься с камеры) вы получаете массив пиксельных данных на кадр; вероятно, вы захотите прочитать о форматах пикселей и о том, как определяются кадры в массиве, что будет полностью зависеть от того, что создает видео. Форматы YUV444, YUV422 и YUV420 довольно распространены; они выражены в цветовом пространстве YUV, но вы можете легко конвертировать между ними и RGB (или даже HSV), если это то, что вы хотите сделать.

Сжатые видеоформаты сами по себе являются кошмаром, но вы можете распаковать их в формат raw с помощью ffmpeg или аналогичного инструмента. (Будьте осторожны — несжатое видео быстро создает огромное количество данных!) Действительно, я бы использовал библиотеки ffmpeg для обработки видео, но они написаны на C (C ?) для ускорения — я не знаю, доступны ли они для java или c #.

Комментарии:

1. Я только что прочитал о FFMpeg. Кажется, если я разделю видео на покадровые изображения, я мог бы тогда просто использовать стандартный GetPixel (x, y) в C # для получения цвета RGB каждого пикселя в кадре. Большое спасибо за ваш вклад