EmguCv:减少灰度

EmguCv: Reduce the grayscales

有没有办法在 openCv 中降低灰度图像的灰度级?

通常我的灰度值是从 0 到 256 的

Image<Gray, byte> inputImage.

在我的例子中,我只需要 0-10 的灰度值。我有什么好的方法可以用 OpenCV 做到这一点,尤其是对于 C#?

OpenCV 上没有任何内置功能允许此类操作。

不过,你可以自己写点东西。看看这个 C++ implementation 并将其翻译成 C#:

void colorReduce(cv::Mat& image, int div=64)
{    
    int nl = image.rows;                    // number of lines
    int nc = image.cols * image.channels(); // number of elements per line

    for (int j = 0; j < nl; j++)
    {
        // get the address of row j
        uchar* data = image.ptr<uchar>(j);

        for (int i = 0; i < nc; i++)
        {
            // process each pixel
            data[i] = data[i] / div * div + div / 2;
        }
    }
}

只需将灰度 Mat 发送到此函数并使用 div 参数。