opencv 二值化处理

二值化处理图像的最大缺点在于对于光照特别敏感

一  二值化处理函数double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );

第一个参数是输入图像

第二个参数是输出图像

第三个参数是设定的阈值

第四个参数是最大阈值

第五个是函数类型

--------其中函数类型有

CV_THRESH_BINARY, //表示如果当前像素点的灰度值大于阈值则将输出图像的对应位置像素值置为255,否则为0

CV_THRESH_BINARY_INV,//如果当前像素点灰度值大于阈值则将像素值置为0,否则为255

CV_THRESH_TRUNC, //如果像素值大于阈值则将阈值赋给当前像素,否则保证当前像素值不变

CV_THRESH_TOZERO,//如果当前灰度值大于阈值则用阈值代替当前灰度值,否则将灰度值置0
CV_THRESH_TOZERO_INV,//与上面相反,如果大于则为0,小于则为阈值



二:自适应阈值二值化//其阈值会跟随像素值不同而改变

adaptiveThreshold(srcImage,dstImage,255,ADAPTIVE_THRESH_GAUSSIAN_C,THRESH_BINARY,5,5);

第三个参数是阈值最大值

第四个参数是阈值类型,ADAPTIVE_THRESH_GAUSSIAN_C--高斯,ADAPTIVE_THRESH_MEAN_C--中值,类似于滤波

第五个参数是像素取值类型与上面的一样

第六个是领域范围(内核大小),其只能取大于1的奇数

第七个是加权平均常数,最后通过高斯或中值滤波求得的像素值再减去这个加权平均后才是阈值


效果图


opencv 二值化处理