opencv - 如何在二进制分割图像中分割连接和重叠的对象?
问题描述
我有一个任务,我必须分割图像中存在的所有柠檬并计算它们,我已经使用 OpenCV 的 inRange 方法成功分割了图像中的所有柠檬,但是图像中有一堆柠檬它们是重叠的,所以在分段掩码中,所有柠檬都相互连接。我尝试腐蚀蒙版,但结果图像中的一些斑点完全消失了。这是我使用的代码,原始图像,分段蒙版和侵蚀蒙版。有什么办法可以分割所有连接的柠檬并计算它们吗?任何帮助将不胜感激。
img = cv2.imread('lemon1.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_green = np.array([20,50,50])
upper_green = np.array([80,255,255])
mask = cv2.inRange(hsv, lower_green, upper_green)
kernel = np.ones((5,5), np.uint8)
eroded = cv2.erode(mask, kernel, iterations=2)
解决方案
推荐阅读
- mysql - SQLALCHEMY 查询与映射表的多对多关系
- javascript - 是否有一种标准方法可以在文本区域或输入上执行原子更改或操作?
- python - 使用 Beautiful Soup 显示来自 onmouseover 属性的文本
- haskell - Haskell - fileManip find - 递归搜索时忽略目录不起作用
- python - 不同功能的不同页面
- css - 移动响应徽标
- java - 遇到覆盖 ArrayList 对象初始化的先前实例的问题
- r - R - 单个向量中的值对:如何检测缺失值?
- javascript - Why {...rest} can be used in attributes
- python - Python_Pandas - 使用条件填充新行