【发布时间】:2021-01-31 09:22:21
【问题描述】:
在我的图像处理项目中,我已经使用cv.findContours 函数获得了蒙版图像(黑白图像)及其轮廓。我现在的目标是创建一个可以为该轮廓绘制中间线的算法。蒙版图像及其轮廓如下图所示。
蒙面图片:
轮廓:
在我的想象中,对于那个轮廓,我想创建一条接近水平的中间线。我已经手动将我的理想中线标记为红色。请检查下图中我提到的红色中间线。
中线轮廓:
值得注意的是,我的最终目标是找到我用黄色标记的尖端。如果您有其他可以直接找到黄色提示点的想法,也请告诉我。为了找到黄色提示点,我尝试了两种方法cv.convexHull 和cv.minAreaRect,但问题是稳健性。我使这两种方法适用于某些图像,但对于我数据集中的其他一些图像,它们效果不佳。因此,我认为找到中间线可能是一个我可以尝试的好方法。
【问题讨论】:
-
你可以使用形态学。请在这里查看我的答案stackoverflow.com/questions/22058485/…。您也可以在这里查看:docs.opencv.org/3.4/d1/dee/tutorial_introduction_to_pca.html
-
使用 minAreaRect 计算围绕区域旋转的矩形。这将为您提供 4 个角和方向角。然后,您可以从 4 个角计算中线并画一条线。
-
@fmw42 感谢您的回复。在问这个问题之前,我已经尝试过
cv.minAreaRect。对于我的数据集中的一些图像,计算出的矩形不在我想要的方向。例如,如果该对象位于图像区域的角落,则计算出的 min-area-rect 将类似于正方形,并且其方向不准确。
标签: python opencv image-processing opencv-contour