【发布时间】:2020-05-12 02:43:37
【问题描述】:
我正在使用 C++ 处理 OpenCV。我想创建一个具有 3 种颜色的图像:红色、白色和黑色。详细地说,我希望背景为红色,然后根据某些条件,部分为白色,部分为黑色。
我遇到的问题是,当我将颜色设置为白色时,它变成了蓝色。
有人知道为什么会发生这种情况以及如何解决吗?
这是我的代码:
//initial image total red
cv::Mat image(Size(w, h), CV_8UC3, cv::Scalar(0, 0, 255));
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
int pixel_v = (int)imggray.at<uchar>(i,j);
if (pixel_v < 200) {
int pixel_bl = (int)imgBool.at<uchar>(i, j);
if (pixel_bl > 200) {
//HERE A WANT WHITE PIXELS, but they are blue
image.at<Vec3b>(i, j) = (255, 255, 255);
}
else {
//black: this works
image.at<Vec3b>(i, j) = (0, 0, 0);
}
}
}
}
【问题讨论】:
-
OpenCV 显示正确的颜色,但您输入错误的值。
-
试试:image.at
(i, j) = cv::Vec3b(255, 255, 255); -
nuzhny:是的,之所以这么叫,是因为我改变了那些像素的颜色!它们变成蓝色而不是白色@Swordfish:可能是。 opencv 中白色的正确值是多少?不是(255,255,255)吗?
-
(255, 255, 255)没有做你认为它做的事情(见comma operator。)它的计算结果只是255。 -
我看错了你设置的
(255, 255, 255);是错误的。