簡體   English   中英

將多維 cv::Mat 轉換為 std::vector<cv::mat> &amp;</cv::mat>

[英]Cast a multidimensional cv::Mat to std::vector<cv::Mat>&

如果我有這樣的變量:

cv::Mat data[3];

我如何將它傳遞給需要輸入的 function :

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

創建一個向量並使用數組對其進行初始化並將其傳遞給function_name() function:

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

其他方法可能是傳遞一個臨時的 object 但在這種情況下, function_name()參數應該是const 僅當您不對function_name()中的參數data進行任何更改時才可行:

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

通過此更改,您可以像這樣調用function_name() function:

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

你可以寫一個 function 接受一個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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM