반응형
아래와 같은 이미지에 선분을 파악하고, 그 선분의 중심에 수직선을 긋는 코드
'''
made by 안산드레이아스
https://ansan-survivor.tistory.com/
'''
# 직선을 탐지하여 수직선을 그려줌.
import cv2
import numpy as np
img = cv2.imread('drawing_normalLine.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, hier = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
# then apply fitline() function
[vx, vy, x, y] = cv2.fitLine(contour, cv2.DIST_L2, 0, 0.01, 0.01)
nx, ny = 1, -vx / vy
mag = np.sqrt((1 + ny ** 2))
vx, vy = nx / mag, ny / mag
# Now find two extreme points on the line to draw line
lefty = int((-x*vy/vx) + y)
righty = int(((gray.shape[1]-x)*vy/vx)+y)
#Finally draw the line
cv2.line(img,(gray.shape[1]-1,righty),(0,lefty),255,2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
반응형
(결과) 하나의 직선만 그었지만, for문을 잘 활용해서 돌리면 모두 가능하다
반응형
'파이썬(python) > Python OpenCV' 카테고리의 다른 글
[Python OpenCV] 그림 이미지에 색상 및 글자 넣기, 사용자의 마우스 드레그로 그림그리기 (0) | 2020.09.19 |
---|---|
[Python OpenCV] 왜곡된 이미지 펼치기, 굽어진 이미지 펼치기, 이미지 보정 (0) | 2020.09.17 |
[Python OpenCV] 파이썬 글자 인식, 파이썬 OCR, 파이썬 Tesseract 사용 (2) | 2020.09.17 |
[Python OpenCV] 이미지 대조 색상 강조 시키기, 이미지 Contrast 기법 (0) | 2020.09.17 |
[Python OpenCV] 두개의 이미지를 하나로 합치기 (0) | 2020.09.17 |