如何将Cv :: Mat中的维度从CxWxH置换为WxHxC?

时间:2017-09-02 19:27:36

标签: c++ algorithm opencv image-processing opencv3.0

如何将cv :: Mat中的尺寸从CxWxH置换为WxHxC(宽度x高度x通道)?

即。我该如何转换Mat:

    来自cv::Mat frame (1000, 1000, CV_8UC3) = cv::imread("image.jpg", -1);

  • 与尺寸:渠道,宽度,高度

  • 使用尺寸来匹配:宽度,高度,通道 int sizes_inputs[] = { 3, 1000, 1000 }; cv::Mat out_image(3, sizes_inputs, CV_8UC);

OpenCV中是否有现成的快速功能进行此类转换?或者我应该自己实现这个算法?

2 个答案:

答案 0 :(得分:0)

如果您希望以不同方式处理基础数据,则可以使用reshape。数据存储为BGRBGRBGR...

否则你将不得不自己洗牌。
cv::reshapecv::minChannels可能非常方便。

答案 1 :(得分:0)

你可以效仿它。我没有测试过代码,但是这样的事情应该做:

cv::Mat frame (1000, 1000, CV_8UC3) = cv::imread("image.jpg", -1);
int sizes_inputs[] = { 3, 1000, 1000 };
cv::Mat out_image(3, sizes_inputs, CV_8UC);

cv::Mat slices[] = {cv::Mat(1000, 1000, CV_8UC, out_image.ptr()),
                    cv::Mat(1000, 1000, CV_8UC, out_image.ptr() + 1000*1000),
                    cv::Mat(1000, 1000, CV_8UC, out_image.ptr() + 1000*1000*2)};
cv::split(frame, slices);