OpenCV C++ 简单小技巧 - 阀值 (4

阀值

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 低于阀值保持原色,高于阀值变黑 黑色 源图像

偏小


image.png

偏大


image.png
image.png

自适应阀值

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);
image.png

二值化

模糊+二值化可以明显去掉噪点

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);
image.png
image.png

阀值的作用就是为了简化图像运算,降低运算复杂度,为智能识别提供更优的前期铺垫。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容