首页 > 其他分享 >vector与mat互转

vector与mat互转

时间:2023-03-21 22:01:03浏览次数:32  
标签:mat img 对象 reshape outData vector 互转 Mat

一、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对象

 

2、类型float的vector对象转单通道Mat对象

3、类型float的vector对象转三通道Mat对象

 

标签:mat,img,对象,reshape,outData,vector,互转,Mat
From: https://www.cnblogs.com/wllwqdeai/p/17241692.html

相关文章