我有一个3层的cv :: mat,我想在第一层和最后一层之间切换。 这样的事情:(matlab风格)
cv::mat mt = image;
mt = [mt[:,:,3],mt[:,:,2],mt[:,:,1]];
答案 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);