Python Wie erkennt man vertikale und horizontale Linien in einem Bild mit HoughLines mit OpenCV?

Ich versuche, eine Schwelle für das Kalibrierschachbrett zu ermitteln. Ich kann die Schachbrettecken nicht direkt erkennen, da es etwas Staub gibt, während ich ein Mikroschachbrett beobachte. Ich probiere verschiedene Methoden aus und HoughLinesP scheint der einfachste Ansatz zu sein. Aber die Ergebnisse sind nicht gut, wie kann ich meine Ergebnisse verbessern?

import numpy as np
import cv2

img = cv2.imread('lines.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
print img.shape[1]
print img.shape
minLineLength=100
lines = cv2.HoughLinesP(image=edges,rho=0.02,theta=np.pi/500, threshold=10,lines=np.array([]), minLineLength=minLineLength,maxLineGap=100)

a,b,c = lines.shape
for i in range(a):
    cv2.line(img, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 3, cv2.LINE_AA)
    cv2.imwrite('houghlines5.jpg',img)

Wie Sie auf der Abbildung unten sehen können, kann ich mein Schachbrett nicht erhalten, die Linien sind in viele Richtungen eingezeichnet ... (das Originalbild:https: //s22.postimg.org/iq2b91xq9/droite_Image_00000.jp)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage