阀值
Mat f1,f2,f3,f4,f5;
threshold(frame, f1, 127, 255, THRESH_BINARY);
threshold(frame, f2, 127, 255, THRESH_BINARY_INV);
threshold(frame, f3, 127, 255, THRESH_TRUNC);
threshold(frame, f4, 127, 255, THRESH_TOZERO);
threshold(frame, f5, 127, 255, THRESH_TOZERO_INV);
阀值第二项255,只对THRESH_BINARY 和 THRESH_BINARY_INV 有效, 越小整体亮度越暗,越大差异越明显
类型 | 说明 | 最小 | 最大 |
---|---|---|---|
THRESH_BINARY | 黑白分离,亮色变白,暗色变黑 | 白色 | 黑色 |
THRESH_BINARY_INV | 黑白分离反向,越亮越黑 | 黑色 | 白色 |
THRESH_TRUNC | 像从源过渡到黑色渐变一样 | 黑色 | 源图像 |
THRESH_TOZERO | 低于阀值变黑,高于阀值保持原色 | 源图像 | 黑色 |
THRESH_TOZERO_INV | 低于阀值保持原色,高于阀值变黑 | 黑色 | 源图像 |
偏小
偏大
自适应阀值
Mat f1,f2,f3;
threshold(frame, f1, _s1.value, _s2.value, THRESH_BINARY);
adaptiveThreshold(frame, f2, _s2.value, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 11, 2);
adaptiveThreshold(frame, f3, _s2.value, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 11,2);
二值化
模糊+二值化可以明显去掉噪点
threshold(frame, f2, _s1.value, _s2.value, THRESH_OTSU);
GaussianBlur(frame, f3, {21,21}, 0);
threshold(f3, f4, _s1.value, _s2.value, THRESH_BINARY+THRESH_OTSU);
阀值的作用就是为了简化图像运算,降低运算复杂度,为智能识别提供更优的前期铺垫。