Где cvcapture opencv2 и их подкласс?

Я проверил эту тему (обрабатывать видеопоток из буфера памяти), и я бы хотел бы сделать то же самое в этом 1-м ответе. Я попытался создать новый файл класса, унаследованный от cvCapture_FFMPEG, и переопределить функцию «открыть». Но я не могу найти ни одного модуля OpenCV, в котором есть класс с именем «cvCapture_FFMPEG».

Я предполагаю, что «cvCapture_FFMPEG» нигде нет в OpenCV и их API. Я прав? Если да, не могли бы вы сказать мне, как лучше всего обрабатывать буфер в OpenCV?

Пожалуйста помоги.


person NEWBIEEBIEE    schedule 23.11.2016    source источник


Ответы (1)


Как вы можете видеть здесь, существует конструктор для cv::Mat, в котором вы напрямую указываете буфер, представляющий кадр. Почему бы не попробовать использовать это вместе с memcpy для обновления содержимого файла Объект Mat всякий раз, когда в буфере появляется новое содержимое?

Что-то такое:

/*myBuffer is a void* pointing on your data.
myBufferType is very important as it will give the number of bytes to 
be read for each element*/
cv::Mat myImage(height, width, myBufferType, myBuffer); 

while(1){

    if(myBufferHasBeenUpdated)
        std::memcpy(Mat.data, myBuffer, numberOfBytesToCopy);

    //Performing some operations on the Mat object
}   

EDIT: я видел, что вы изменили название своего вопроса. Вот документация по cv:: VideoCapture, который находится в модуле highgui OpenCV. Если вы хотите прочитать видео прямо из файла, это лучший способ продолжить. Однако, если вы хотите прочитать видео, уже находящееся в буфере памяти, как в упомянутой вами теме, я не думаю, что есть способ легко его использовать.

person Axel B.    schedule 23.11.2016
comment
Спасибо @Axel B и извините за неправильное название. Я еще не проверял memcpy. я попробую - person NEWBIEEBIEE; 23.11.2016