加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在OpenCV中将灰度图像复制到RGB图像红色通道?

发布时间:2020-12-16 10:09:45 所属栏目:百科 来源:网络整理
导读:我有两个输入图像,它们是灰度,我创建了另一个图像,它是RGB,应该在红色通道中包含一个灰色图像,在绿色中包含另一个. Mat img,img2;img =imread("above.jpg",CV_LOAD_IMAGE_GRAYSCALE);img2 =imread("left.jpg",CV_LOAD_IMAGE_GRAYSCALE);Mat * aboveLeft = ne
我有两个输入图像,它们是灰度,我创建了另一个图像,它是RGB,应该在红色通道中包含一个灰色图像,在绿色中包含另一个.

Mat img,img2;
img =imread("above.jpg",CV_LOAD_IMAGE_GRAYSCALE);
img2 =imread("left.jpg",CV_LOAD_IMAGE_GRAYSCALE);

Mat * aboveLeft = new Mat(img.rows,img.cols,CV_LOAD_IMAGE_COLOR);

int from_to [] = {0,1};
cv::mixChannels(&img,1,aboveLeft,3,from_to,1);

我尝试使用mixChannels命令,将img输入写入aboveLeft的第一个通道,但我无法找出正确的语法并获得断言错误.

这是填写频道的正确方法吗?

解决方法

我假设img和img2具有相同的大小和类型.

cv::Mat img = cv::imread("above.jpg",CV_LOAD_IMAGE_GRAYSCALE);
cv::Mat img2 = cv::imread("left.jpg",CV_LOAD_IMAGE_GRAYSCALE);

std::vector<cv::Mat> images(3);
Mat black = Mat::zeros(img.rows,img.type());
images.at(0) = black; //for blue channel
images.at(1) = img;   //for green channel
images.at(2) = img2;  //for red channel

cv::Mat colorImage;
cv::merge(images,colorImage);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读