【发布时间】:2023-03-19 03:50:01
【问题描述】:
天真的问题,我是第一次使用颜色处理。 我想从 Mat 图像交换 RGB 通道。 我正在尝试从原始图像创建另一个图像并将 R 和 G 值指定为 R。然后在另一个图像上,将 R 和 G 值指定为 G。 这是我的代码:
Mat testcolor = imread("tulip.jpg", CV_LOAD_IMAGE_COLOR);
int rows = testcolor.rows;
int cols = testcolor.cols;
Mat leftimg(rows, cols, CV_8UC3);
Mat rightimg(rows, cols, CV_8UC3);
cvtColor(testcolor, testcolor, COLOR_RGB2BGR);
for (int i = 0; i < testcolor.rows; i++) {
for (int j = 0; j < testcolor.cols; j++ ){
leftimg.at<Vec3b>(i, j)[0] = testcolor.at<Vec3b>(i,j)[0];
leftimg.at<Vec3b>(i, j)[1] = testcolor.at<Vec3b>(i,j)[0];
leftimg.at<Vec3b>(i, j)[2] = testcolor.at<Vec3b>(i,j)[2];
rightimg.at<Vec3b>(i, j)[0] = testcolor.at<Vec3b>(i, j)[1];
rightimg.at<Vec3b>(i, j)[1] = testcolor.at<Vec3b>(i, j)[1];
rightimg.at<Vec3b>(i, j)[2] = testcolor.at<Vec3b>(i, j)[2];
}
}
cvtColor(leftimg, leftimg, COLOR_BGR2RGB);
imwrite("leftimg.png", leftimg);
cvtColor(rightimg, rightimg, COLOR_BGR2RGB);
imwrite("rightimg.png", rightimg);
我希望像这样,如果我将 R 和 G 指定为 R --> 绿色部分会有一些红色阴影。如果我将 R 和 G 指定为 G,红色部分会有一些绿色阴影。我错过了代码中的某些内容吗?还是我缺乏理解?
在这种情况下,我没有原始图像,也没有转换我的色彩空间,因为我想看看它是如何与 RGB 一起工作的。如果需要,我稍后会转换颜色空间。
【问题讨论】:
标签: c++ image opencv colors rgb