将多维cv :: Mat转换为std :: vector <cv :: Mat>&

时间:2020-04-18 01:16:33

标签: c++ opencv

如果我有这样的变量:

cv::Mat data[3];

如何在需要输入的函数中传递它:

void function_name(std::vector<cv::Mat>& data);

2 个答案:

答案 0 :(得分:2)

创建一个向量,并使用数组对其进行初始化,然后将其传递给function_name()函数:

std::vector<cv::Mat> v(data, data + (sizeof data / sizeof data[0]));
function_name (v);

其他方法可能是传递临时对象,但是在这种情况下,function_name()参数应该为const。仅在不对data中的参数function_name()进行任何更改的情况下才可行:

void function_name(const std::vector<cv::Mat>& data);
                   ^^^^^

进行此更改后,您可以像这样调用function_name()函数:

function_name (std::vector<cv::Mat>(data, data + (sizeof data / sizeof data[0])));

答案 1 :(得分:0)

您可以编写一个函数,该函数需要一个cv::Mat*并返回一个std::vector<cv::Mat>

std::vector<cv::Mat> ptrToVec(cv::Mat* matPtr){
    int index=0;
    std::vector<cv::Mat> ret;
    while(matPtr) 
        ret.push_back(matPtr[index++]);

    return ret;
}
相关问题