видеоданные в opencv

Кто-нибудь может сказать, пожалуйста, в каком формате видеоданные сохраняются в opencv, после декодирования их с помощью ffmpeg. Я имею в виду, если он сохранен в виде матрицы, то это 8-битный / пиксель? Если кто-то может предоставить некоторые документы или ссылку, объяснение в деталях будет большой помощью. Я также пытался Google, но не мог найти что-то связанное.

Благодарю.

0

Решение

Окончательная ссылка для изучения, вероятно, сам код! Посмотрите на функцию CvCapture_FFMPEG::open в файле modules/highgui/src/cap_ffmpeg_impl.hpp, Этот метод вызывается, например, cvCaptureFromAVI() а также cvCaptureFromFile(), Код, приведенный ниже, явно получает ширину и высоту из файла, но он игнорирует глубину входного бита и всегда использует упакованное 8: 8: 8-битное RGB представление видео в памяти (как указано PIX_FMT_BGR24 постоянная):

#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0)
int err = avformat_open_input(&ic, _filename, NULL, NULL);
#else
int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);
#endif

.......

#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 3, 0)
avformat_find_stream_info(ic, NULL);
#else
av_find_stream_info(ic);
#endif

.......

avpicture_fill( (AVPicture*)&rgb_picture, rgb_picture.data[0],
PIX_FMT_BGR24, enc->width, enc->height );

Еще одно доказательство того, что это так, представлено в следующем коде CvCapture_FFMPEG::retrieveFrame:

img_convert_ctx = sws_getCachedContext(
NULL,
video_st->codec->width, video_st->codec->height,
video_st->codec->pix_fmt,
video_st->codec->width, video_st->codec->height,
PIX_FMT_BGR24,
SWS_BICUBIC,
NULL, NULL, NULL
);

Глядя на документацию ffmpeg, PIX_FMT_BGR24 в этом вызове указывается место назначения формат пикселя, то есть то, что будет передано в opencv.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]