2024-03-28 13:50:25 发布
网友
在分析图像以找到有运动的区域的上下文中,我得到了一个中间结果,使用opencv和python(假设它们是100%二进制的):
所以我的问题是:有没有一种方法可以用一个特定的“厚度”阈值来定位白色斑点?你知道吗
大致可以这样看:
我一直在寻找变换和操作,如连接组件和形态变换,但这些都不起作用,我不太清楚从哪里开始,除此之外。你知道吗
形态学开口是解决这个问题的理想方法。它会移除所有比给定直径细的白色部分。你知道吗
在OpenCV中,它在^{}中使用op=cv2.MORPH_OPEN实现:
op=cv2.MORPH_OPEN
kernel = cv2.getStructuringElement(cv2.cv.MORPH_ELLIPSE, diameter) output = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
但请注意,这会删除对象的薄部分,如果对象的一部分足够宽,则不会留下完整的对象。这可以通过重建来实现,先进行腐蚀,然后进行形态学重建(也称为测地扩张)。你知道吗
OpenCV没有这个算法。This Q&A对如何在OpenCV中实现它给出了一个粗略的概述,但是这是一个非常昂贵的算法,有更有效的算法。你知道吗
在Scikit映像中可能有一个实现,我还没有找到它。你知道吗
DIPlib(带有名为PyDIP的Python绑定)(我也是作者)有一个dip.OpeningByReconstruction,但是您必须从源代码构建库,因为我们还没有一个简单的Python预打包发行版。你知道吗
形态学开口是解决这个问题的理想方法。它会移除所有比给定直径细的白色部分。你知道吗
在OpenCV中,它在^{} 中使用
op=cv2.MORPH_OPEN
实现:但请注意,这会删除对象的薄部分,如果对象的一部分足够宽,则不会留下完整的对象。这可以通过重建来实现,先进行腐蚀,然后进行形态学重建(也称为测地扩张)。你知道吗
OpenCV没有这个算法。This Q&A对如何在OpenCV中实现它给出了一个粗略的概述,但是这是一个非常昂贵的算法,有更有效的算法。你知道吗
在Scikit映像中可能有一个实现,我还没有找到它。你知道吗
DIPlib(带有名为PyDIP的Python绑定)(我也是作者)有一个dip.OpeningByReconstruction,但是您必须从源代码构建库,因为我们还没有一个简单的Python预打包发行版。你知道吗
相关问题 更多 >
编程相关推荐