OpenCV--图像二值化处理

来源:互联网 发布:端口号怎么设置 编辑:程序博客网 时间:2024/06/09 17:19

使用的是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在什么情况下用不清楚。

0 0
原创粉丝点击