Cv2.Threshold()是一个用于图像二值化的函数。具体来说,它会将图像中的每一个像素的灰度值与一个阈值进行比较,大于该阈值的像素会被赋值为最大灰度值(即 255),小于该阈值的像素会被赋值为最小灰度值(即 0)。这样就可以将图像中的所有像素分为两类:黑色和白色。
函数调用
? public static double Threshold(InputArray src, OutputArray dst, double thresh, double maxval, ThresholdTypes type)
参数说明
?type参数用于指定阈值处理的类型
?代码示范
using OpenCvSharp;
public void ThresholdExample()
{
// 读取图像
Mat src = Cv2.ImRead("image.jpg", ImreadModes.GrayScale);
// 应用阈值处理
Mat dst = new Mat();
Cv2.Threshold(src, dst, 120, 255, ThresholdTypes.Binary);
// 显示结果
Cv2.ImShow("Thresholded Image", dst);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
?这个示例代码使用Cv2.Threshold
函数对灰度图像进行阈值处理。函数的参数包括输入图像、输出图像、阈值、最大像素值和阈值类型。在这个例子中,阈值为120,最大像素值为255,阈值类型为二进制阈值。
Cv2.AdaptiveThreshold函数是OpenCV中用来进行自适应阈值处理的函数。
自适应阈值处理是一种图像二值化的方法,不同于全局阈值处理,它不使用一个固定的阈值对整个图像进行二值化,而是根据图像的局部区域进行二值化。这种方法可以有效地处理光照不均匀的图像。
函数调用
??public static void AdaptiveThreshold(InputArray src, OutputArray dst, double maxValue, AdaptiveThresholdTypes adaptiveMethod, ThresholdTypes thresholdType, int blockSize, double c)
参数说明
?代码示范
using OpenCvSharp;
class Program
{
static void Main(string[] args)
{
// 读入图像并转为灰度图
Mat img = Cv2.ImRead("image.jpg", ImreadModes.GrayScale);
// 使用自适应阈值处理图像
Mat thresh = new Mat();
Cv2.AdaptiveThreshold(img, thresh, 255, AdaptiveThresholdTypes.MeanC, ThresholdTypes.Binary, 11, 2);
// 显示结果
Cv2.ImShow("Adaptive Threshold", thresh);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}