有没有办法减少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/