一、Mat转vector
1、生成1xN的vector对象
1)Mat对象直接转换成vector对象
(1)主要是将Mat对象转换为单通道、单行的Mat对象!然后就可以直接转换成vector对象
Mat src = imread("a.jpg");
// 通用转换
vector<int> v = src.reshape(1, 1)
// 如果src是单通道
vector<int> v = src.reshape(0, 1)
2)获取Mat对象的单列
vector<int> c = src.col(0).reshape(1)
2、生成3xN的vector对象
vector<float> mat2vec(Mat img, cv::Size2d size = { 512, 512 })
{
resize(img, img, size);
cvtColor(img, img, cv::COLOR_BGR2RGB);
img.convertTo(img, CV_32FC3);
img = img / 255.0;
vector<Mat> mv;
// 三通道分开处理
split(img, mv);
vector<float> R = mv[0].reshape(1, 1);
vector<float> G = mv[1].reshape(1, 1);
vector<float> B = mv[2].reshape(1, 1);
// R、G、B三通道数据合并
vector<float> outData;
outData.emplace_back(R.begin(), R.end());
outData.emplace_back(G.begin(), G.end());
outData.emplace_back(B.begin(), B.end());
return outData;
}
二、vector转mat
1、类型uchar的vector对象转单通道Mat对象