我觉得我应该如何配置Canny边缘检测。也许有人可以带领我走上正确的道路。
我试图检测菜单中突出显示的选项。我有两个图像,它可以在一个图像上运行,但无论我如何试图摆弄这些参数,我都无法让它适用于另一个图像。当查看边缘图片输出时,矩形边缘看起来很清晰,所以我不明白它为什么不挑选矩形。
我一直在使用的图片是:
我的代码在这里:
import cv2
img = cv2.imread('sublime.png')
edges = cv2.Canny(img, 210, 255)
copy = edges.copy()
img2, contours, hierarchy = cv2.findContours(copy, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
image = 0
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True) #Removes tiny deviations, tries to go for straight lines.
if len(approx) == 4: #Lines, should be square.
x, y, w, h = cv2.boundingRect(cnt)
if w > 10:
print("Width and height: ", w, h)
image = img[y:y+h, x:x+w]
cv2.imshow('image', img)
cv2.imshow('edges', edges)
cv2.imshow('area', image)
cv2.waitKey(0)
cv2.destroyAllWindows()