본문 바로가기
Robot/로봇기업

[파이썬] DAY15 openCV 차선 인식하기(동영상,이미지)

by 9루트 2022. 2. 8.

 

 

 

 

540 x 960 인 픽셀로 이루어진 3채널 데이터

 

 

import matplotlib.pyplot as plt
import cv2
img = cv2.imread("Ex1.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
print(img.shape)
print(img.shape[0])
print(img.shape[1])
plt.imshow(img)
plt.show()

 

1. 간단 적용 해보기

1) 단채널로 만들기 위해 아래 채널을 추가해준다.

img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

흑백으로 처리가 된다.

 

2) 흐리게 만들어주기 위해 다음 코드를 추가한다.

정규분포 처럼 표준편차가 작은 그래프를 옆으로 퍼트리기 위해 블러 처리해준다.

k_size = 5 # 커널의 크기
img_b = cv2.GaussianBlur(img,(k_size, k_size),0) # 단채널로 되어있으므로 0
plt.imshow(img_b, cmap = "gray")
plt.show()

 

3) 양쪽 경계값을 설정해준다.

lower_value = 50
upper_value = 200
equaulize_gray = cv2.Canny(img_b, lower_value, upper_value)
plt.imshow(equaulize_gray, cmap = "gray")
plt.show()

를 추가해준다.

검정색은 어떠한 데이터를 곱해도 검정색이므로 필요 없는 부분으로 분류 된다.

검정색은 어떠한 데이터를 곱해도 검정색이므로 필요 없는 부분으로 분류 된다.

 

4) 선을 중심으로 관심 영역을 설정해준다.

필요한 부분을 넘파이 배열로 만들어낸다.

import numpy as np

를 넣는다.

mask : 관심 있는 크기 만큼 데이터를 본떠서 잘라준다.

전달한 데이터의 사이즈로 된 0으로 채워진 넘파이 배열이 만들어진다.

0으로 모두 채워져있기 때문에 검정 화면으로 출력된다.

 

mask = np.zeros_like(img)
if len(img.shape) > 2: # 3채널이면
    c_c = img.shape[2] #색상값을 의미한다.
    i_mask_color = (255,) * c_c
else: # 단채널이면
    i_mask_color = 255 #하얀색
print(img.shape)
img_shape = img.shape

# 꼭지점 4개를 설정해준다.
filter_value = np.array([[(100,img_shape[0]),
               (450,320),
               (550,320),
               (img_shape[1]-20, img_shape[0])]], dtype = np.int32) # 정수 자료형

cv2.fillPoly(mask,filter_value, i_mask_color)
plt.imshow(mask, cmap = "gray")
plt.show()

 

 

 

내부에 메소드 이용해서 해보았다. (블로그)

car2.py

 

2) 정석적으로 해보기

메일

 

경계선 만들고 -> 자르기 (o)

자르기 -> 경계선 만들기 (x) 자른 부분까지 경계선이 생긴다.

 

 

ex6 -> 동영상의 라인까지 인식할 수 있다.

 

https://medium.com/@mrhwick/simple-lane-detection-with-opencv-bfeb6ae54ec0

 

Simple Lane Detection with OpenCV

Using OpenCV and Python to Detect Road Lanes

medium.com

medium.com

 

'Robot > 로봇기업' 카테고리의 다른 글

취업  (0) 2022.03.10
[파이썬] DAY15 네트워크  (0) 2022.02.08
[파이썬] DAY15 openCV 이미지 출력 수정하기  (0) 2022.02.08