-
opencv를 이용한 자율주행 자동차 제작기(1)스터디그룹/OpenCv 2020. 1. 7. 00:50
opencv를 이용한 공부시작...
ubuntu 18.04 + opencv3 + python3.7이용
[code1]
import cv2
import numpy as np
img = cv2.imread('ro.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,150)
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(img,(x1,y1),(x2,y2),(0,0,255),1)
cv2.imshow('edges', edges)
cv2.imshow('result', img)
cv2.waitKey()
cv2.destroyAllWindows()[CODE2]
엣지를 검출하기 위한 알고리즘 중 가장 유명한 것은 캐니 알고리즘이며 (Canny Edge Detector) OpenCV에서는
Canny라는 함수로 사용할 수 있다.
edges = cv2.Canny(gray,50,150,apertureSize = 3)
250인 첫번째 Threshold와 500인 두번째 Threshold를 각각 변경하면 다음과 같이 엣지가 다르게 나온다.
import cv2
import numpy as np
img = cv2.imread('ro.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,150,200,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,70)
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(img,(x1,y1),(x2,y2),(0,0,255),1)
cv2.imshow('edges', edges)
cv2.imshow('result', img)
cv2.waitKey()
cv2.destroyAllWindows()Threshold값을 수정하면서 엣지를 검출하는 선을 조절할 수 있음을 확인할수 있다.
[작성:정혜리]
'스터디그룹 > OpenCv' 카테고리의 다른 글
템플릿 매칭 (0) 2020.05.03 opencv 기초(1) : 픽셀값 읽어오기 (0) 2020.02.05 opencv를 이용한 자율주행 자동차 제작기(2) (0) 2020.01.12