EmguCv:减少灰度

本文关键字:灰度 EmguCv | 更新日期: 2023-09-27 18:35:52

有没有办法减少openCv中灰度图像的灰度?

正常情况下,我的灰度值从 0 到 256 为

Image<Gray, byte> inputImage .

就我而言,我只需要 0-10 之间的灰度值。我有没有用OpenCV做到这一点的好方法,特别是对于C#?

EmguCv:减少灰度

OpenCV上没有任何内置的东西允许这种事情。

不过,你可以自己写一些东西。看看这个C++实现,并将其转换为 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 参数即可。