OpenCV--图像二值化处理

使用的是threshold和adaptiveThreshold方法。
官方示例给出了很好的说明

下面说一下个人的理解。

double cv::threshold    (InputArray     src,
    OutputArray     dst,
    double  thresh,
    double  maxval,
    int     type 
)   
参数 含义
src 输入,要求是单通道图像
thresh 门限值
maxval 超过门限的像素被赋予的新值
type 处理算法类别

type的取值

类型 含义
THRESH_BINARY 超过thresh的像素被设为maxval, 其他被设为0
THRESH_BINARY_INV 相反
THRESH_TRUNC 超过thresh的像素被设为maxval, 其他不变
THRESH_TOZERO 超过thresh的像素不变, 其他设为0
THRESH_TOZERO_INV 相反
THRESH_OTSU flag, use Otsu algorithm to choose the optimal threshold value
THRESH_TRIANGLE flag, use Triangle algorithm to choose the optimal threshold value

THRESH_OTSU和THRESH_TRIANGLE和前面的type可以组合使用,好处是不用自己指定thresh值,系统会进行计算并且作为返回值返回。
THRESH_OTSU文档上说如果图像黑白分明,就可以用这个,我试了一下,用扫描仪扫描的一个带文字的图像,由于没有光照的差异,算是黑白分明的了,用这个参数得到的结果和自己多次调整thresh得到的最优结果几乎是一样的。
THRESH_TRIANGLE在什么情况下用不清楚。

你可能感兴趣的:(OpenCV)