让我们以一个简单的场景为例,在该场景中我们有一个柠檬图像,我们想要对其中的柠檬进行分割和计数。
图像分割算法有分水岭算法、斑点计数算法、霍夫圆/椭圆算法、轮廓检测算法等。在本文中,我使用了轮廓检测和分水岭算法。
涉及的步骤:读取图像
转换为HSV
阈值
模糊它
删除多余/不需要的区域
在原始图像上绘制轮廓
使用分水岭来检测分离轮廓
进行平均分水岭和轮廓检测以获得满意的结果。
首先,我们导入一些常见的Python依赖项。
from __future__ import print_functionimport numpy as npimport cv2import matplotlib.pyplot as plt%matplotlib inlinefrom skimage import iofrom skimage.morphology import watershedfrom skimage.feature import peak_local_maxfrom scipy import ndimage
我们创建一个Python函数以可视化图像。Python代码如下:def show(img): plt.imshow(img) plt.show()
现在,我们读取图像。
#loadfp = 'lemons1.jpg'img = cv2.imread(fp)show(img)print(img.shape)