使用的是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在什么情况下用不清楚。
新闻热点
疑难解答