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

How to flip a cv::mat in c++?

本文关键字:cv mat 翻转 c++      更新时间:2023-10-16

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

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

更完善的ifred解决方案:

#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);
        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);