Python Comment détecter les lignes horizontales et verticales dans une image avec HoughLines avec OpenCV?

Je m en essayant d'obtenir un seuil de l'étalonnage de l'échiquier. Je ne peux pas détecter directement l'échiquier des coins, car il y a un peu de poussière que j'observe un micro échiquier.
J'ai essayer plusieurs méthodes et HoughLinesP semble être l'approche la plus facile. Mais les résultats ne sont pas bons, comment améliorer mes résultats?

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)

Comme vous pouvez le voir sur la figure ci-dessous, je ne peux pas obtenir mon échiquier, les lignes sont tracées dans beaucoup de directions... (l'image d'origine : https://s22.postimg.org/iq2b91xq9/droite_Image_00000.jpg)

Python Comment détecter les lignes horizontales et verticales dans une image avec HoughLines avec OpenCV?

  • L'utilisation de seuillage, ou d'essayer de réduire les petits points (éroder, dilater).
  • J'ai déjà essayer mais il n'est pas couplé avec hough lignes. Peut-être qu'il pourrait aider à obtenir les lignes? merci pour votre htfepb 😉
  • Je voudrais vraiment seuillage donner une autre chance!
  • Pouvez-vous télécharger l'image originale? Je suis également d'accord avec le don de seuillage un essai combiné avec l'analyse morphologique. Je peux donner à ceci un essai moi-même si j'avais l'image d'origine.
  • Aussi, est-il spécifiquement requis pour l'utilisation de la Transformation de Hough? Si vous supprimez une partie du bruit, effectuer une assez grande fermeture puis de trouver les coins (Harris par exemple), ce qui devrait résoudre votre problème.
  • Ok je le fais que je l'ajoute dans la question 😉
  • J'ai essayer de supprimer le bruit avec filtre médian, mais elle n'est pas suffisante ou à labellize la place de l'isoler. Mais le résultat n'est pas très bonne, je veux dire l'erreur de reprojection est parfois important (RMS > 1)
  • si vous n'êtes pas tenu de mettre en œuvre votre propre solution, vous pouvez essayer avec un déjà mis en œuvre la méthode docs.opencv.org/2.4/doc/tutorials/calib3d/...
  • Yep je sais 😉 mais l'image est trop bruyant, il ne marche pas c'est pourquoi je fais cette solution 😉

InformationsquelleAutor user3601754 | 2016-09-28