2016-05-27 13 views
1

Ich habe einige Probleme mit cv2.Houghlines() zeigt vertikale Linien, wenn ich glaube, dass die echte Passform horizontale Linien bieten sollte. Hier ist ein Clip des Codes verwende ich:Hough Platz für CV2 Houghlines

 rho_resoultion = 1 
     theta_resolution = np.pi/180 
     threshold = 200 

     lines = cv2.HoughLines(image, rho_resoultion, theta_resolution, threshold) 

     # print(lines) 
     for line in lines: 
      rho, theta = line[0] 
      a = np.cos(theta) 
      b = np.sin(theta) 
      x0 = a*rho 
      y0 = b*rho 
      x1 = int(x0 + 1000*(-b)) 
      y1 = int(y0 + 1000*(a)) 
      x2 = int(x0 - 1000*(-b)) 
      y2 = int(y0 - 1000*(a)) 
      cv2.line(image,(x1,y1),(x2,y2),(255,255,255),1) 

     cv2.namedWindow('thing', cv2.WINDOW_NORMAL) 
     cv2.imshow("thing", image) 
     cv2.waitKey(0) 

Dies ist der Eingang und Ausgang:

Ich denke, es wäre einfacher, zu extrahieren, was, wenn auftritt das Hough-Space-Bild konnte angesehen werden. Die Dokumentation enthält jedoch keine Informationen zum Anzeigen des vollständigen Speicherplatzes. Wie würde man den ganzen Hough-Transformationsraum zeigen? Ich habe versucht, den Schwellenwert auf 1 zu reduzieren, aber es wurde kein Bild bereitgestellt.

Antwort

0

Vielleicht haben Sie bei der Berechnung der Winkel etwas falsch gemacht. Fühlen Sie sich frei, etwas Code zu zeigen.

Hier ist ein Beispiel dafür, wie alle Hough Linien in einem Bild zeigen:

import cv2 
import numpy as np 

img = cv2.imread('sudoku.jpg') 

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
edges = cv2.Canny(gray,50,150,apertureSize = 3) 

lines = cv2.HoughLines(edges,1,np.pi/180,200) 
for line in lines: 
    for rho,theta in line: 
     a = np.cos(theta) 
     b = np.sin(theta) 
     x0 = a*rho 
     y0 = b*rho 
     x1 = int(x0 + 1000*(-b)) 
     y1 = int(y0 + 1000*(a)) 
     x2 = int(x0 - 1000*(-b)) 
     y2 = int(y0 - 1000*(a)) 

     cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2) 

cv2.imshow('Houghlines',img) 
if cv2.waitKey(0) & 0xff == 27: 
    cv2.destroyAllWindows() 

Originalbild:

enter image description here

Ergebnis:

enter image description here

+0

Das ist eigentlich sehr ähnlich dem Code, in dem ich u sed, aber die Ergebnisse sind ziemlich schlecht. Sie können die Ergebnisse sehen, die ich in der Frage hinzugefügt habe. – chase