python opencv 직선 검 측 및 경사 각도 측정(소스 코드+주석 첨부)

3009 단어 opencv직선 검 측
학습 수요 로 인해 나 는 그림 속 의 직선 을 검출 하고 이 직선 들 의 각 도 를 얻 고 싶다.그래서 저 는 인터넷 에서 직선 검 측 코드 를 많이 찾 았 지만 직선 경사 각 도 를 계산 하 는 코드 를 찾 지 못 했 습 니 다.그래서 저 는 약간의 시간 을 들 여 직선 검 측 과 경사 각 도 를 측정 하 는 코드 를 썼 습 니 다.여러분 께 도움 이 되 었 으 면 좋 겠 습 니 다!
주:이 코드 는 간단 한 구조 이미지 의 직선 만 검사 할 수 있 고 복잡 한 구조의 그림 은 합 리 적 인 파 라 메 터 를 설정 해 야 합 니 다.
다음은

import cv2
import numpy as np

def line_detect(image):
  #       HSV
  hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
  #     
  lowera = np.array([0, 0, 221])
  uppera = np.array([180, 30, 255])
  mask1 = cv2.inRange(hsv, lowera, uppera)
  kernel = np.ones((3, 3), np.uint8)

  #              (       )
  mask = cv2.morphologyEx(mask1, cv2.MORPH_CLOSE, kernel) #   :         ,       
  mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)  #   :         ,       

  #     
  edges = cv2.Canny(mask, 50, 150, apertureSize=3)
  #     
  cv2.imshow("edges", edges)
  #                   ,      HoughLinesP()  ,               
  lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 40,minLineLength=10,maxLineGap=10)
  print "lines=",lines
  print "========================================================"
  i=1
  #                 
  for line in lines:
    # newlines1 = lines[:, 0, :]
    print "line["+str(i-1)+"]=",line
    x1,y1,x2,y2 = line[0]  #        ,                  (x1,y1)(x2,y2)
    cv2.line(image,(x1,y1),(x2,y2),(0,0,255),2)   #      
    #       ,    
    x1 = float(x1)
    x2 = float(x2)
    y1 = float(y1)
    y2 = float(y2)
    print "x1=%s,x2=%s,y1=%s,y2=%s" % (x1, x2, y1, y2)
    if x2 - x1 == 0:
      print "      "
      result=90
    elif y2 - y1 == 0 :
      print "      "
      result=0
    else:
      #     
      k = -(y2 - y1) / (x2 - x1)
      #     ,           
      result = np.arctan(k) * 57.29577
      print "       :" + str(result) + " "
    i = i+1
  #           
  cv2.imshow("line_detect",image)
  return result

if __name__ == '__main__':
  #     
  src = cv2.imread("lines/line6.jpg")
  #       
  cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
  #       
  cv2.imshow("input image", src)
  #     
  line_detect(src)
  cv2.waitKey(0)
테스트 그림:
在这里插入图片描述
효과 그림:
在这里插入图片描述
이미지 처리 가 비교적 거 칠 어서 시간 문제 로 인해 깊이 연구 하지 못 했다.
python opencv 가 직선 검 측 을 실현 하고 경사 각 도 를 측정 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 opencv 직선 검 측 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기