如何在c ++中翻转cv :: mat?

时间:2014-10-27 18:03:21

标签: c++ opencv image-processing matrix

我有一个3层的cv :: mat,我想在第一层和最后一层之间切换。 这样的事情:(matlab风格)

cv::mat mt = image;
mt = [mt[:,:,3],mt[:,:,2],mt[:,:,1]];

2 个答案:

答案 0 :(得分:2)

更加优雅的ifryed&#39>解决方案:

#include <algorithm>

cv::Mat im = getImage();
std::vector<cv::Mat> img_rgb;
cv::split(im,img_rgb);
std::iter_swap(img_rgb, img_rgb+2); 
cv::merge(img_rgb,im);

答案 1 :(得分:1)

        cv::Mat im = getImage();
        cv::Mat tmp = cv::Mat::zeros(cv::Size(im.rows,im.cols),CV_8UC1);
        std::vector<cv::Mat> img_rgb;
        cv::split(im,img_rgb);

        img_rgb[0].copyTo(tmp);
        img_rgb[2].copyTo(img_rgb[0]);
        tmp.copyTo(img_rgb[2]);
        cv::merge(img_rgb,im);