找出图片中矩形板的角

Find the corners of a rectangle plate in a picture

我需要使用Python和OpenCv找到图片中矩形板的角坐标。

原图是这样的:

现在我使用以下脚本进行边缘检测:

import cv2
import numpy as np
import matplotlib.pyplot as plt

image_original = cv2.imread('c:/python_test/camera_pics/Basler_acA640-300gm__22354308__20210211_135725420_36.tiff', cv2.IMREAD_COLOR)
image_gray = cv2.cvtColor(image_original, cv2.COLOR_BGR2GRAY)
filtered_image = cv2.Canny(image_gray, threshold1=20, threshold2=200)

cv2.imwrite('c:/python_test/test.bmp',filtered_image)

然后它看起来像这样:

现在我想找到盘子的角,但我不知道该怎么做。这些角可以是内部矩形或外部矩形的角。我在 Paint 中编辑了下面的图片以显示我的意思。

你能帮我写一个脚本来找到这个盘子的角坐标吗?

这是一项艰巨的任务,尤其是对于上脸的两个下角。对比度低(有些地方甚至不存在)并且图像杂乱无章。

凸包确实会给你两个顶角(前提是始终可以检测到螺丝)。您还可以通过在凸包中找到重要的角度来找到下面的底角。

知道板的厚度及其与真实高度相比的投影高度,您可以稍微估计上表面角的位置。

由于长边没有那么糟糕地检测到,您可以考虑长而连续的线段(在 8 连接意义上),并尝试将它们与凸包和估计的角相匹配。