c# - EmguCv:降低灰度

标签 c# opencv image-processing grayscale

有没有办法减少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参数即可。

关于c# - EmguCv:降低灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745914/

相关文章:

python - 从边框提取轮廓

android - 支持 Android 的硬 float 的 OpenCV

c# - 使用数组更改图片框的背景色

C++ - 停止无限循环 - 追踪轮廓

c# - 使用 .NET-Standard 2.0 项目构建 ASP.NET-Core 3.1 会导致冲突的 Microsoft.AspNetCore.Mvc.Analyzers 程序集

opencv - 使用OpenCV将多维矩阵初始化为多维矩阵会产生链接错误

c# - 如何将 CheckedListBox 项目设置为默认选中

javascript - Chrome 未按预期呈现 Canvas 数据 [JS/Canvas API]

c# - 如何使用 ToolTipService.Duration 使 WPF ToolTip 显示得更快?

c# - 为什么 SWIG C# 重载失败?