我现在遇到这个问题几天了,我无法找到解决办法。
我正在尝试存储一个cv :: Mats的数组,到目前为止,我这样做的方式是
std::vector<cv::Mat> store_frames(32);
每次我只是使用frame.copyTo(store_frames[i])
将新框架复制到其所在位置。
如果它在main内部,但是如果我想将它传递给一个函数并做同样的事情它就不再好了,这样可以正常工作。
我用简单的垫子没有同样的问题。我只是在标题内全局声明它们
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 store_frames做同样的事情。首先,如果我尝试以同样的方式在标题中声明它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
。我已经在互联网上寻找解决方案,但没有找到任何解决方案。我知道问题本身可能听起来很愚蠢,但我是新手,我不太了解。
所以我的问题是如何声明这个向量,以便可以将它传递给函数,在里面修改它并保存修改?
谢谢!
答案 0 :(得分:1)
尝试
在标题中声明std::vector<cv::Mat> store_frame;
,在源代码中声明store_frame.resize(32);
。
在源代码中使用std::vector<cv::Mat> store_frames(32);
。
ps:我刚刚将其添加为评论。 :)