简体   繁体   English

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

[英]How to flip a cv::mat in c++?

I have a cv::mat with 3 layers, and I want to switch between the first and the last layers. 我有一个3层的cv :: mat,我想在第一层和最后一层之间切换。 Some thing like this:(matlab style) 这样的事情:( matlab风格)

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

More polished ifryed's solution: 更精致的ifryed解决方案:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM