图像处理最常见的就是二值化处理,OpenCV自然也会有二值化的相关函数,在OpenCV中大致有几种二值化:
普通的二值化:通过输入阈值来完成二值化,这个方法需要自己确定二值化的阈值OTSU:大津算法,OpenCV中自带了大津算法的二值化自适应二值化:通过均值或者高斯均值自动计算的二值化方法不同二值化
cv::threshold(src,dst,thresh,255,cv::THRESH_BINARY);这个函数最后的一个参数有BINARY和BINARY_INV两种,确定背景是黑色还是白色。
大津算法
cv::threshold(src,dst,thresh,255,cv::THRESH_OTSU);大津算法只改变了最后的一个参数,其中因为大津算法会自动计算阈值,所以阈值输多少都没关系,因为没用。
注意 我在使用这个函数的时候就犯过这个错误,这个函数可以接收的只是8UC1类型,也就是8bit单通道的图像,其余类型会报错,不可以使用浮点数等类型。
自适应二值化
cv::adaptiveThreshold(image,dst,value,fun,type,size,param); image:原图dst:结果value:二值图的像素灰度值fun:采用的方法ADAPTIVE_THRESH_MEAN_C 和ADAPTIVE_THRESH_GAUSSIAN_Ctype:结果类型THRESH_BINARY和THRESH_BINARY_INVsize:核大小,类似于高斯核param:相当于一个阈值偏移量,最后自动计算得到的阈值会减去这个偏移量