2016-11-23 46 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