opencv2的cvcapture及其子类在哪里?

时间:2016-11-23 06:22:50

标签: c++ opencv ffmpeg buffer video-processing

我查看了这个主题(process video stream from memory buffer),我想在第一个答案中做同样的事情。 我试图创建一个继承自cvCapture_FFMPEG的新类文件,并覆盖“打开”功能。 但是我找不到任何名为“cvCapture_FFMPEG”的类的OpenCV模块。

我假设“cvCapture_FFMPEG”在OpenCV及其API中无处可去。我对吗? 如果是这样,你能告诉我在OpenCV中处理缓冲区的最佳方法吗?

请帮忙。

1 个答案:

答案 0 :(得分:0)

正如您所见herecv::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
}   

编辑:我看到你改变了问题的标题。以下是OpenCV的highgui模块中有关cv::VideoCapture的文档。如果您想直接从文件中读取视频,这是继续进行的最佳方式。但是,如果您想要在内存缓冲区中读取视频,就像您提到的主题一样,我认为没有办法轻松使用它。