我正在使用下面的代码来查找图像中最大正方形的角。我想做同样的事情,但是如果正方形碰巧是扭曲的(像梯形),它仍然可以找到形状的角。我如何使用Python的OpenCV模块来做到这一点呢?
importedImage = 'shapes.png'
originalImg = cv.imread(importedImage)
#filters image bilaterally and displays it
bilatImg = cv.bilateralFilter(originalImg, 5, 175, 175)
#finds edges of bilaterally filtered image and displays it
edgeImg = cv.Canny(bilatImg, 75, 200)
#gets contours (outlines) for shapes and sorts from largest area to smallest area
contours, hierarchy = cv.findContours(edgeImg, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
contours = sorted(contours, key=cv.contourArea, reverse=True)
#boxes in largest rectangle
rectangle = cv.minAreaRect(contours[0])
corners = cv.boxPoints(rectangle).astype(np.int32)
1条答案
按热度按时间9jyewag01#
为了解决你的问题,你可以用这个片段。我在新的部分留下了评论,使它更容易理解
额外好处:如果你想检查哪个顶点是哪个,你可以简单地基于this answer追加最后一部分,其中
(x, y)
是上面为每个顶点提供的坐标