将vector<Mat>转换为矢量文件Opencv
Posted
技术标签:
【中文标题】将vector<Mat>转换为矢量文件Opencv【英文标题】:Convert vector<Mat> to vector file Opencv 【发布时间】:2014-11-21 08:29:53 【问题描述】:如何将 Mat 文件的矢量转换为 Mat 文件?我有一个大小为 N 的向量。每个 mat 文件的大小为 1xM。我想创建一个大小为 1xNM 的新 Mat 文件?我怎样才能在 Opencv 中这样做?或者更好地创建一个大小为 MN 的新向量,它将包含每个 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 似乎有效。
【问题讨论】:
"赋值给 int temp 它似乎有效" cout << flat << endl;(一次打印整个 Mat) 【参考方案1】:是的,有一个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 标题,它不起作用就地(这里的常见陷阱!)
【讨论】:
感谢 opencv 的 GURU!以上是关于将vector<Mat>转换为矢量文件Opencv的主要内容,如果未能解决你的问题,请参考以下文章
将 Mat 转换为 <vector<vector>> C++
将 vector<Tensor> 输出转换为 vector<Mat> 输出