2014-01-09 100 views
0

我現在有這個問題好幾天了,我找不到解決辦法。將一個cv :: Mat數組傳遞給C中的函數

我試圖儲存品種的數組::墊和辦法,我到目前爲止做的,這是由具有一個 std::vector<cv::Mat> store_frames(32);,每次我只是複製新幀,其位置與frame.copyTo(store_frames[i])。 這工作正常,如果它在主要內部,但如果我想將它傳遞給一個函數,做同樣的事情,它不再好。 我沒有與簡單的墊子相同的問題。我只是宣佈他們在全球頭 cv::Mat frame;

內,如果我有一個函數:

void function(cv::Mat &f1) { 
.. 
f1.at<float>(10,10) += 100; 
.. 
} 

然後調用函數function(frame); 所有函數內部的變化將被保存。所以我們可以說我有類似

... 
for(int i=0; i<5; i++) { 
function(frame); 
std::cout<<frame.at<float>(10,10)<<' '; 
} 

輸出(假設frame.at(10,10的初始值)將 100 200 300 400 500

問題現在,我不能做首先,如果我試圖在標題中以同樣的方式聲明它std::vector<cv::Mat> store_frames(32);我在編號32時得到一個錯誤,說Error: expected a type specifier如果我只是說std::vector<cv::Mat> store_frames;那麼它不會知道它的大小。我看到有人打電話給store_frames.resize我試過這樣做,但我得到一個錯誤,說this declaration has no storage class or type specifier。我查了互聯網尋找解決方案,但沒有找到任何。我知道這個問題本身可能聽起來很愚蠢,但我對此並不熟悉,而且我也不太瞭解。

所以我的問題是如何聲明這個向量,以便它可以傳遞給一個函數,修改它的內部和修改將被保存?

謝謝!

回答

1

嘗試

  1. 宣佈它在頭std::vector<cv::Mat> store_frame;store_frame.resize(32);在源代碼中。在源代碼中使用std::vector<cv::Mat> store_frames(32);

ps:我剛剛添加了這個評論。 :)