将“CV_32FC2”类型的矩阵转换为“CV_32FC1”类型

时间:2015-12-24 14:20:49

标签: opencv

我有a类型的矩阵CV_32FC2

我尝试将其转换为类型为b的新矩阵CV_32FC1,但似乎矩阵b也获得CV_32FC2

代码示例和输出:

cv::Mat b;
a.convertTo(b, CV_32FC1);
std::cout << a.type() << " " << b.type() << std::endl;

产生输出:

13 13

我希望b的类型更改为5,这是CV_32FC1

的枚举值

1 个答案:

答案 0 :(得分:6)

给定A类型的矩阵CV_32FC2,又名Mat2f

Mat2f A(3,2);
randu(A, Scalar(0, 0), Scalar(1,1));

enter image description here

您可以使用reshape获得B类型的单个矩阵CV_32FC1,又名Mat1f

Mat1f B = A.reshape(1);

enter image description here

使用split的两个矩阵CV_32FC1(正如@Micka在评论中所建议的那样):

vector<Mat1f> CC;
split(A, CC);

其中CC[0]是:

enter image description here

CC[1]是:

enter image description here