【问题标题】:What's the meaning of the values in the OpenCV image representation?OpenCV 图像表示中的值是什么意思?
【发布时间】:2022-01-14 17:34:33
【问题描述】:

我在 Python 中使用 OpenCV。当我通过调用cv2.imread() 加载 JPG 或 PNG 图像时,我得到一个 2D 矩阵,其大小与该图像的分辨率相同。矩阵中的每个数字都在 0 到 255 的范围内。

我不明白这个矩阵如何表示图像。特别是,我希望看到一个 3D 矩阵,其第三维表示 RGB 通道。如果一个像素用一个 8 位整数表示,那么整个图像只能有 256 种颜色,但显然不是这样。

我在这里错过了什么?

【问题讨论】:

    标签: image opencv image-processing


    【解决方案1】:

    "imread" 默认第二个参数为 0,这意味着你的图像被转换为​​ 8 位深度灰度。因此,您将获得 0 到 255 之间的值作为图像每个像素的颜色。

    尝试如下更改调用以获得 3 通道彩色图像:

    cv2.imread("yourimage.bmp",1);
    

    【讨论】:

    • 或者更好的是,使用预定义的常量cv2.CV_LOAD_IMAGE_COLOR 而不是1。即使有人不记得该特定标志的值,这也清楚地表明发生了什么。
    【解决方案2】:

    参考文档here

    Mat src1 = imread(inputImageFilename1.c_str(), 1); # make sure flag > 0
    

    【讨论】:

      【解决方案3】:

      对于一个仍然感到困惑的人,给你。 我假设 OP 指的是彩色图像。 OpenCV 将图像表示为 [Blue, Green, Red](因为与 RGB 相比,BGR 在 90 年代更流行)。 让我们以 3 x 3 图像为例。它将表示如下:Image showing a 3D matrix

      我希望它能解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-24
        • 2014-08-03
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 2020-11-04
        • 1970-01-01
        相关资源
        最近更新 更多