有没有一种简单的方法来查看图像每个点的强度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种简单的方法来查看图像每个点的强度?相关的知识,希望对你有一定的参考价值。

我在一批图像上使用阈值(超过一百)。如果我可以通过在灰色图像上单击鼠标来查看每个点的强度,那么找到所有图像的良好阈值数字将是一种非常奇妙且简单的方法。但我是OpenCV的新手,不知道我该怎么办。如果有人可以指导我或者现有代码吗?

答案

您可以使用setMouseCallback函数(请参阅opencv doc)将回调设置为imshow窗口,该窗口将为您提供click事件的坐标。

void onClickCallback(int event, int x, int y, int, void*);

int main(int argc, char **argv) {

    Mat image = imread("/home/zda/0.png", CV_LOAD_IMAGE_COLOR);

    namedWindow("image");
    setMouseCallback( "image", onClickCallback, &image);

    imshow("image",image);
    while ('q' != waitKey(0));
}

void onClickCallback( int event, int x, int y, int, void *image) {
    if(event == CV_EVENT_LBUTTONDOWN) {
        std::cout << "value at (" << x << ", " << y << ") is " << ((Mat*)image)->at<Vec3b>(y, x) << endl;
        //This one for grayscale
        //std::cout << "value at (" << x << ", " << y << ") is " << (int)((Mat*)image)->at<uchar>(y, x) << endl;

    }
}

以上是关于有没有一种简单的方法来查看图像每个点的强度?的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中计算直方图的梯度

如何使用音频文件? [关闭]

有没有一种方法来调整位图图像的大小?

是否可以使用 matplotlib 实现表面图的连续颜色渐变?

Python怎么输出一幅图像每个点的像素值?

我有一张图片,我想编辑该图片(放置文本等)并将该图片转换为 PDF。有没有一种简单的方法来做到这一点PHP?