opencv二值化操作分为:全局阈值和局部阈值两种。在进行图像二值化之前需要对图片进行灰度处理。
全局阈值
全局阈值分为:手动阈值和自动阈值两种。
手动阈值
opencv函数:
threshold(gray_src, dst, threshold_value, threshold_max,THRESH_BINARY);
//原图,目标图,已知阈值(用于比较的阈值),阈值最大值,阈值类型(threshold()函数支持的对图像取阈值的方法由其确定)
该函数对图像取阈值的方法有5种:
-
THRESH_BINARY:过门限的值为最大值,其他值为0
-
THRESH_BINARY_INV:过门限的值为0,其他值为最大值
-
THRESH_TRUNC:过门限的值为门限值,其他值不变
-
THRESH_TOZERO:过门限的值不变,其他设置为0
-
THRESH_TOZERO_INV:过门限的值为0,其他不变
自动阈值
自动阈值分为大津法和三角形算法两种:
- 大津法
opencv函数:
threshold(gray_src,dst,0,255,cv.THRESH_BINARY | cv.THRESH_OTSU)
- 三角形算法
opencv函数:
threshold(gray_src,dst,0,255,cv.THRESH_BINARY | cv.THRESH_TRIANGLE)
局部阈值(自适应阈值)
计算局部阈值中方法有两种::mean_c 和 guassian_c
- ADAPTIVE_THRESH_MEAN_C
opencv函数:
adaptiveThreshold(gray_src, dst, 255, cv::ADAPTIVE_THRESH_MEAN_C, cv::THRESH_BINARY, 57, 5);
- ADAPTIVE_THRESH_GAUSSIAN_C
opencv函数:
adaptiveThreshold(gray_src, dst, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10)