【发布时间】:2015-04-13 06:13:50
【问题描述】:
我有一张灰色图像,我想将该图像中的所有像素值更改为白色。
我试试这些代码:
int main(int argc, char** argv){
cv::Mat img = cv::imread("C:/mata.jpg");
for (int i = 0; i < img.rows; i++)
{
for (int j = 0; j < img.cols; j++)
{
img.at<uchar>(i, j) = 255;
}
}
imshow("result", img); }
图片尺寸:37 x 29
我检查了该循环中的总像素,结果,我可以访问所有像素,但图像中的所有像素都不会变成白色(只有四分之一的图像变成白色,其他的仍然有与原始图像相同的颜色)。
谁能帮帮我?
【问题讨论】:
-
您的图像不是灰度的。它被加载为 3 通道图像。试试这个:
cv::Mat img = cv::imread("C:/mata.jpg", cv::IMREAD_GRAYSCALE); -
您确定您的图像是灰度图像吗?...还是所有分量都相等的 RGB 图像?
-
我试过 imread("image", CV_BGR2GRAY) 但结果相同。 @sgarizvi 它有效!谢谢.. :)
-
@anne 正确的语法是
imread("image", 0)你使用的标志,用于转换图像。
标签: c++ image opencv image-processing