如何将Mat文件的 vector 转换为Mat文件?我有一个大小为N的 vector 。每个mat文件的大小为1xM。我想创建一个大小为1xNM的新Mat文件吗?我如何在Opencv中这样做?或者最好创建一个大小为MN的新 vector ,其中将包含每个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似乎可行。
最佳答案
是的,有一个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 header ,它不能就地工作(这里有常见的陷阱!)
关于c++ - 将vector <Mat>转换为 vector 文件Opencv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27057039/