У меня есть видео (расширение .ravi), которое является выходом программного обеспечения ИК-камеры.Мне нужно вычислить температуру для каждого пикселя для каждого кадра в этом видео.Компания по разработке ИК-камер и программного обеспечения уже сказала мне, что они не помогут, так как такая информация покажет большую часть их ноу-хау.
Когда я воспроизводю видео, например, в mplayer, температурные поля, кажется, отображаются правильно.Таким образом, информация, которая переводится в цвет пикселя, содержит информацию о его температуре.
Моя идея состоит в том, чтобы изолировать каждый кадр в файл, найти информацию о пикселях для каждого пикселя в каждом файле.Я могу получить температуру пиксель за пикселем для отдельных кадров с помощью оригинального программного обеспечения ИК-камеры (хотя это делается по принципу «укажи и щелкни», что невозможно для каждого кадра).Затем, с информацией о пикселях на одной стороне и информацией о температуре на другой стороне (обе для первого кадра), я надеюсь связать их с помощью функции, и, надеюсь, эта функция применяется ко всем кадрам видео.
Для этого видео я получаю следующие метаданные (из FFMEPG):
Metadata:
META : (640,480,16,312500),(0,0,0,0),0,1,80
Duration: 00:13:53.06, start: 0.000000, bitrate: 158338 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x481, 157619 kb/s, 32 fps, 32 tbr, 32 tbn, 32 tbc
Я предполагаю, что цвет, который я вижу при воспроизведении видео, который каким-то образом связан с температурой пикселей, исходит отЗначения YUV для каждого пикселя.
Как получить доступ к этой информации?
Я попытался преобразовать каждый кадр в изображение (например, PNG) с помощью FFMPEG, а затем получить значение для каждого пикселя.(например, используя ImageMagick), но я получаю значения RGB.
Следуя @ VC. Один совет, я могу преобразовать каждый кадр в один файл:
ffmpeg -i original.ravi -c copy -pix_fmt yuyv422 frame%05d.bmp
(Если я использую .yuv какрасширение вместо .bmp Я получаю один файл, а не файл для каждого кадра.)
Теперь, с файлом для каждого кадра, я могу посмотреть на него с помощью ImageMagick:
convert -size 640x481 -depth 8 -sampling-factor 4:2:2 YUV:frame00001.bmp -colorspace YUV frame00001.txt
и вот как выводитсявыглядит так:
# ImageMagick pixel enumeration: 640,481,65535,yuv
0,0: (12436,26650,58361) #3068E3 yuv(48,104,227)
1,0: (6314,29662,45762) #1973B2 yuv(25,115,178)
2,0: (15547,25111,19123) #3C624A yuv(60,98,74)
Из документации я понимаю эту информацию следующим образом: первая строка, заголовок, содержит информацию о количестве пикселей (640x481) и максимальном значении для каждого поля YUV: 65535 (этоЯ предполагаю, что это опция -depth 8), затем для каждого пикселя строка: ее позиция, значения YUV в скобках, затем в качестве комментария значение RGB и еще что-то, чего я не понимаю.
Сохраняются ли отдельные кадры как файлы yuv, даже если они имеют расширение .bmp?Правильно ли я прочитал вывод ImageMagick?