我怎么能得到像素的颜色在我的图像(加载灰色)

How can I get the color of pixels in my image (load grey)?

本文关键字:图像 我的 加载 灰色 颜色 怎么能 像素      更新时间:2023-10-16

我使用此代码打印OpenCV Mat像素的强度。但是,我在控制台上打印字符,而不是0到250之间的值:

image1 = imread(nameJpg, 0);
image2 = imread(lastJpg, 0);
for (int j = 0; j < image1.rows-10; j += 1){
    for (int i = 0; i < image1.cols-10; i += 1) {
        std::cout << "" << image1.at<uchar>(i, j) << "    " <<i mage1.at<uchar>(i, j)<<"n";
    }
}

我该如何解决这个问题?

您希望将其强制转换为整型,例如:

(int)image.at<uchar>(i, j)

您可以通过引用ASCII表来测试。

编辑

你提到的bug的来源是你如何访问像素。I应该代表行,j代表列。

for (int i = 0; i < src.rows; i++) {
    for (int j = 0; j < src.cols; j++)
        cout << (int)src.at<uchar>(i, j) << " ";
    cout << endl;
}

在灰度图像中,像素强度在0到255之间,而不是250。

如果你想要获取某个像素的值,你可以使用:

auto image=cv::imread(path,CV_LOAD_IMAGE_GRAYSCALE);
auto pixel_value=image.at<uchar>(row_idx,col_idx);

OP编辑后:

如果您想在打印时获得数字而不是字符,请使用以下命令:

auto pixel_value= static_cast<unsigned int>(image.at<uchar>(row_idx,col_idx));