Arrays 将cv::Mat数组传递给C中的函数
我有这个问题已经有几天了,我找不到解决的办法 我正在尝试存储一组cv::Mats,到目前为止,我的方法是使用Arrays 将cv::Mat数组传递给C中的函数,arrays,function,vector,Arrays,Function,Vector,我有这个问题已经有几天了,我找不到解决的办法 我正在尝试存储一组cv::Mats,到目前为止,我的方法是使用 std::向量存储帧(32)
std::向量存储帧(32)每次我只是用frame.copyTo(store\u frames[I])
将新帧复制到它们的位置。
如果它位于main内部,那么它可以正常工作,但是如果我想将它传递给一个函数并做同样的事情,那么它就不再好了。
对于简单的垫子,我没有同样的问题。我只是在标题中全局声明它们
cv::垫框;
如果我有一个函数:
void function( cv::Mat &f1 ) {
..
f1.at<float>(10,10) += 100;
..
}
输出(假设frame.at(10,10)的初始值为
100200300400500
现在的问题是,我不能用std::vector store_frames做同样的事情。首先,如果我尝试以同样的方式在标题中声明它std::vector store_frames(32)
我在32号上遇到一个错误,说错误:应该是一个类型说明符
。如果我只是说std::vector store\u frames;
它就不知道它的大小。我看到有人在某处调用store\u frames.resize
我试过这么做,但我得到一个错误,说这个声明没有存储类或类型说明符ier
。我在互联网上查找解决方案,但没有找到任何解决方案。我知道这个问题本身可能听起来很愚蠢,但我对这个问题不熟悉,知道的不多
所以我的问题是我如何声明这个向量,这样就可以把它传递给一个函数,在里面修改它,然后保存修改
谢谢!试试看
在头文件中声明为std::vector store_frame;
,在源代码中声明为store_frame.resize(32);
在源代码中使用std::vector store_frames(32);
附言:我刚刚加了这个作为评论。:)
...
for(int i=0; i<5; i++) {
function(frame);
std::cout<<frame.at<float>(10,10)<<' ';
}