最近接触到了关于小物体图像计数方面的问题,基于分水岭算法的项目实践。尝试学习了解,在此回顾一下自身理解:
首先自己找了一些元器件进行实验,原图为:
识别效果图为:
代码基于opencv实现,实现过程为:
1.图像二值化:根据设置阈值分割将图像前景背景分离;
2.数学形态学操作(开操作,腐蚀):去除噪声并且消除二值化带来的孔洞;
3.距离变换:计算图像中每个非零像素点与其最近的零像素点之间的距离,输出的是保存每个非零点的距离信息;
4.根据距离变换得到的结果进行二值化操作;
5.根据二值化图勾画轮廓;
import numpy as np import cv2 import