python hough 변환 검 측 직선 실현 방법

원리

 2 검 측 절차
매개 변수 공간(ρ,θ) m*n 으로 계량 화ρ등분 수θ의 등분 수)개 단원 을 설정 하고 누산기 행렬 을 설정 하 며 초기 값 은 0 입 니 다.
그림 경계 에 있 는 모든 점(x,y)을 가 져 옵 니 다.ρ=xcosθ+ysinθ,모든 사람 을 구하 다θ대응했어ρ가치ρ화해시키다θ대응 하 는 단원 은 누적 기 를 1 로 추가 합 니 다.즉,Q(i,j)=Q(i,j)+1 입 니 다.
매개 변수 공간 에서 모든 누산기 의 값 을 검사 하고 누산기 의 가장 큰 단원 에 대응 하 는 것 을 검사 합 니 다.ρ화해시키다θ직각 좌표계 에서 직선 방정식 의 매개 변수 다.
 3 인터페이스

image:2 값 그림,canny 테두리 검출 출력.여 기 는 result 입 니 다.
rho:픽 셀 단위 의 거리 정밀도,여 기 는 1 픽 셀 입 니 다.검 측 할 선분 이 더 많 으 면 0.1 로 설정 할 수 있다.
theta:라디안 단위 의 각도 정밀도,여 기 는 numpy.pi/180 입 니 다.검 측 할 라인 이 더 많 으 면 0.01*numpy.pi/180 으로 설정 할 수 있 습 니 다.
threshod:한도 값 매개 변수,int 유형,설정 한도 값 을 초과 해 야 선분 이 검출 되 고 여 기 는 10 입 니 다.
minLine Length:선분 은 픽 셀 단위 의 최소 길이 입 니 다.
max Line Gap:같은 방향 에서 두 라인 은 한 라인 의 최대 허용 간격 으로 판정 합 니 다.
4 코드 및 결과

import os
import numpy as np
import cv2
from PIL import Image, ImageEnhance
import math
 
 
def img_processing(img):
  #    
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
  # canny    
  edges = cv2.Canny(binary, 50, 150, apertureSize=3)
  return edges
 
 
def line_detect(img):
  img = Image.open(img)
  img = ImageEnhance.Contrast(img).enhance(3)
  # img.show()
  img = np.array(img)
  result = img_processing(img)
  #      
  lines = cv2.HoughLinesP(result, 1, 1 * np.pi/180, 10, minLineLength=10, maxLineGap=5)
  # print(lines)
  print("Line Num : ", len(lines))
 
  #        
  for line in lines:
    for x1, y1, x2, y2 in line:
      cv2.line(img, (x1, y1), (x2, y2), (255, 0, 0), 1)
    pass
  img = Image.fromarray(img, 'RGB')
  img.show()
 
 
if __name__ == "__main__":
  line_detect("1.jpg")
  pass
원 도 는 다음 과 같다.

검사 결과:


이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기