将vector <mat>转换为矢量文件Opencv </mat>

时间:2014-11-21 08:29:53

标签: c++ opencv vector mat

如何将Mat文件的矢量转换为Mat文件?我有一个大小为N的向量。每个mat文件大小为1xM。我想创建一个大小为1xN M的新Mat文件?我怎么能在Opencv中这样做?或者更好地创建一个大小为M N的新向量,它将包含每个Mat文件的像素。 Opencv中是否有重塑功能?

   Mat flat;       // output

    for (size_t i=0; i<patch_image.size(); i++)
    {
        // you said, those would be 1xM, but let's make sure.
        flat.push_back( patch_image[i].reshape(1,1) ); 
    }

    flat = flat.reshape(1,1);

    int temp;   
    for(int i=0; i<flat.rows; i++){
        for(int j=0; j<flat.cols; j++){

            temp = (int)flat.at<uchar>(i,j);
            cout << temp << "\t";
        }       
        cout << endl;
    }

然而,对int temp的赋值似乎有效。

1 个答案:

答案 0 :(得分:2)

是的,有一个reshape功能。

vector<Mat> vm; // input
Mat flat;       // output

for (size_t i=0; i<vm.size(); i++)
{
    // you said, those would be 1xM, but let's make sure.
    flat.push_back( vm[i].reshape(1,1) ); 
}

flat = flat.reshape(1,1); // all in one row, 1xN*M now

请注意,重塑会返回一个新的Mat标头,它无法正常运行 inplace (这里常见的陷阱!)