找到最小外接四边形

问题描述 投票:0回答:1

我在下面第一张图片中有一个多边形。该多边形取自 yolov8-seg。我知道它应该是矩形。我的任务是纠正这个面具的透视。我可以通过找到四个角轻松做到这一点。

contours = cv2.findContours(mask, method=cv2.RETR_LIST, mode=cv2.CHAIN_APPROX_SIMPLE)[0]
epsilon = 0.1 * cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], epsilon, True)

所以“大约”是我的面具的四个角,在第一张图片中以红点的形式出现。 但是,如果我能找到第二张图片中显示的封闭四边形的绿色角,则透视校正可能会更精确。如何找到它? OpenCV 有类似的求最小三角形、矩形和圆形的函数,但没有求四边形。

我有积分

我想要的积分

如何找到它? 更新:源图像

python opencv computer-vision geometry semantic-segmentation
1个回答
0
投票

如果您可以使用 Imagemagick 来完成该任务。我有一个用于该任务的 bash unix shell 脚本(位于 http://www.fmwconcepts.com/imagemagick/quadcorners1)。它不能在 Windows (DOS) 上运行,但可以在 Windows Unix 或 Cygwin 上运行。不幸的是,该脚本当前需要调整一个参数,以确保您获得 4 条且仅 4 条线来提取交集。该脚本需要 Imagemagick 7,并且无法在 Imagemagick 6 上运行。您可以使用子进程调用从 Python 调用 Imagemagick 和我的脚本。

输入:

quadcorners1.sh -h 18% -i save -k final quad.png

1175.8,344.8 1042.5,842.2 166.5,719.1 166.5,93.1

© www.soinside.com 2019 - 2024. All rights reserved.