2016-11-23 18 views
0

我检查了这个主题(process video stream from memory buffer),我想在第一个答案中也这样做。 我试着创建一个从cvCapture_FFMPEG继承的新类文件,并覆盖“open”函数。 但我找不到任何有名为“cvCapture_FFMPEG”的类的OpenCV模块。opencv2的cvcapture及其子类在哪里?

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

请帮忙。

回答

0

正如你可以看到here,存在一个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 
} 

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

+0

谢谢@Axel B,抱歉。我还没有选中“memcpy”。我会试一试 – NEWBIEEBIEE