2016-05-27 4 views
1

実際のフィットが水平線を提供すると信じているときに垂直線を表示するcv2.Houghlines()に何らかの問題があります。私はあれば発生しているものを抽出することが容易になると思います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) 

:ここに は、私が使用していたコードのクリップですハフ空間画像を見ることができた。 しかし、ドキュメントは完全なハフ空間を表示する方法に関する情報を提供しません。 ハフ変換空間全体をどのように表示しますか? しきい値を1に下げようとしましたが、画像が表示されませんでした。

答えて

0

角度を計算するときに何か問題があるかもしれません。気軽にコードを表示してください。ここで

は、画像内のすべてのハフ線を表示する方法の例です:

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() 

オリジナル画像:

enter image description here

結果:

enter image description here

+0

実際です私が使っているコードに非常によく似ていますしかし、結果はかなり悪いです。私は質問に追加した結果を見ることができます。 – chase

関連する問題