使用Emgu对图像进行灰度拉伸

Emgu项目使得我们可以在C#.NET中方便地使用OpenCV的类库。在使用过程中发现关于灰度拉伸的函数有点缺失,于是自己写了一个:

        /// <summary>
        /// 对图像进行灰度拉伸
        /// </summary>
        /// <param name="img">原灰度图像</param>
        /// <returns>经过灰度拉伸的灰度图像</returns>
        public static Image<Gray, Byte> GrayStretch(Image<Gray, Byte> img)
        {
            //取最小值最大值
            double[] minValues;
            double[] maxValues;
            Point[] minLocations;
            Point[] maxLocations;
            img.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);
            double max = maxValues[0];
            double min = minValues[0];

            //  灰度拉伸
            if (max != min)
            {
                return (img - (int)min).Mul(255 / (max - min));
            }
            else
            {
                return img * 0 + min;
            }
        }


你可能感兴趣的:(windows,C#,opencv,Emgu)