正确检测图像中的角点opencv python

2024-05-19 21:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的图像,我从中使用以下代码检测角点

import cv2

img = cv2.imread('image.jpg',cv2.IMREAD_COLOR)

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
bilateral = cv2.bilateralFilter(gray, 9, 75, 75)
canny = cv2.Canny(bilateral, 50, 150)

corners    = cv2.goodFeaturesToTrack(canny,15,0.06,25)

for i in range(len(corners)):
    cv2.circle(img, (corners[i][0][0], corners[i][0][1]), 5, 255, -1)

cv2.imshow('dilated', img)
cv2.waitKey(0)

enter image description here

不是所有的角落都被正确地确定了,那就是我所期待的黑色角落应该被确定以及盒子的角落。幸运的是,在这种情况下,框角是确定的,但并不是所有的黑角都确定。我如何才能改善这个结果,甚至改变我获得正确弯角的方法。Harris角点不是这个方法的好解决方案,因为我需要一个单点作为角点,但是Harris角点方法返回许多接近点作为角点的候选点。提前谢谢你的建议。在


Tags: 方法代码图像importimgcv2colorimread