python - 使用opencv完成边缘补全
问题描述
我是使用opencv进行图像处理的新手,我的主要目标是在对土壤样本图像使用canny边缘检测后完成开放的相交轮廓,因为我想分割土壤颗粒并从图像中检测颗粒的像素区域。 ..我已经编写了一个代码,它将一个点作为输入并在各个方向发射光线并检测到它周围曲线的距离并可以关闭形状但我不知道如何使用它来完成轮廓该图像会自动关闭所有打开的轮廓..
图片
解决方案
关闭操作可以很好地关闭图片中的大部分空白:
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(6,6))
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
对于大小为 2 的内核,您将获得:
通过增加内核大小,您将能够填补更大的空白。但是,在某些时候,您将不可避免地丢失有关背景的信息,因为前景对象之间更大的间隙(可能包括部分隐藏的背景对象)也会被关闭。例如,对于 6 的内核大小,您将获得:
您可以尝试不同的内核大小和形式,看看哪种内核会为您的应用程序产生最佳结果。
推荐阅读
- sql - 使用 SQL WITH 子句,然后在一个过程中将其与 SELECT 语句合并
- r - R中的几个字符串操作
- python - Python - 从 URL 下载文件
- java - org.omg.CORBA.TIMEOUT:达到客户端超时
- javascript - 如何根据模式组织数组?
- arrays - 将值附加到零数组中的坐标
- c# - 从层次结构窗口中移除一个游戏对象
- android - 使用带有 android 文件管理器的 azure 文件共享 smb
- amazon-web-services - aws lambda:如何避免为每个部署创建 lambda 版本
- javascript - 我应该以哪种方式导入 React?