opencv4java里面有一个阈值分割方法:
Imgproc.threshold(grayMat, thresholdMat, 0, 255, Imgproc.THRESH_TRUNC);
其中这个threshold()具体如下:
public static double threshold(Mat src,
Mat dst,
double thresh,
double maxval,
int type)
第一二个参数src和dst不用多说,就是原位图转成的Mat和原位图要转成的Mat
第三个参数thresh是一个阈值点,这个点的设置将影响你的分割效果。
第四个参数maxval是最大值要设置成多少,比如二值化的话,最大值肯定是255,小于thresh的都是0,大于thresh的都是255。
第五个参数是类型参数,类型有默认的五种:
THRESH_BINARY
THRESH_BINARY_INV
THRESH_TRUNC
THRESH_TOZERO
THRESH_TOZERO_INV
引用《Learning OpenCV》里的一张图:
第五个参数:
1.如果是THRESH_BINARY的话,就是二值化,从thresh为阈值进行判断每个像素点该归maxval还是0。
2.如果是THRESH_BINARY_INV的话,是反向二值化,从图中也可以看的出来,跟THRESH_BINARY是相反的。
3.如果是THRESH_TRUNC的话,“trunc”的意思是“裁剪、修剪”的意思,那么就是超过thresh的都等于tresh,不超过的等于原图像素点值。只针对超过thresh的像素点。
4.如果是THRESH_TOZERO的话,大于tresh的像素点维持原图像素值,小于的都为0。
5.如果是THRESH_TOZERO_INV的话,与4相反。