在上一个博文中,高斯滤波后对灰度值用canny检测边缘。调整canny参数,检测边缘。下面换一种方式,即先二值化后,再findContours检测检测轮廓。
图像二值化
cv2.threshold(), cv2.adaptiveThreshold(), Otsu’s thresholding.
简单阈值划分
cv2.threshold(InputArray src, int threshold, int maxValue, int thresholdType)
函数返回两个量,retVal和阈值转换后的图像thresholded image。其中,第一个值retVal是在使用Ostu时,返回Ostu最优阈值;否则,则返回自己设置的阈值,例如127。
- scr 输入图像
- thresholf 分割阈值
- maxValue 超过阈值后设定为最大值
- thresholdType 阈值类型,一共有5种类型表示二值化的图片处理方式。cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV是最常见的两种,前者表示大于阈值的取最大值(255),小于阈值的取最小值0;后者,小于阈值的取最大值(255),大于阈值的取最小值0。
自适应阈值划分
cv2.adaptiveThreshold((InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
- src:输