OpenCV(6)
-
OpenCV 차선 인식 (2)
Edge 검출을 활용한 차선 인식 HSV, RGB를 통한 차선 인식은 색, 범위를 지정해줘야 하는 문제가 있었고 특히 그림자, 차선이 끊긴 구간에 취약했습니다. 문제를 해결하기 위해 Edge 검출을 활용했습니다. 우선 더욱 효과적인 Edge검출을 위해 Gaussian Filter를 사용해서 잡음을 제거했습니다. 잡음이 제거된 영상을 회색화 시킨 후 밝기 평활화를 통해 밝기 값을 추출한 후 Sobel, Canny 두 가지 필터를 사용해 보고, 비교했습니다. 먼저 Sobel필터가 대각선에 민감하게 반응하도록 2D Filter에 직접 필터 값을 대입했습니다. sobelX = np.array([[0, 1, 2], [-1, 0, 1], [-2, -1, 0]]) gx = cv2.filter2D(equ_frame, ..
2019.09.05 -
OpenCV 차선 인식 (1)
준비 운영체제 : Windows 10 언어 : Python 파이썬에서 OpenCV를 사용하기 위해 cv2 라이브러리를 설치했습니다. 추가로 numpy 라이브러리도 사용합니다. 보편적으로 아래와 같은 순서를 거쳐 차선을 인식합니다. 하지만 위 순서와는 조금 다르게 HSV 범위 값을 사용해서 색 추출을 활용한 차선 인식을 시도해봤습니다. HSV 차선 인식 차선 인식을 하기 위해 가장 먼저 차선의 색인 노란색과 흰색의 HSV범위 값이 필요했습니다. HSV 범위 값 추출은 마우스 이벤트를 활용해 10초 간격, 픽셀 단위로 추출했습니다. 영상의 프레임마다 차선의 명도가 다르기 때문에 단일 값으로 범위를 주지 않고 추출한 값의 최댓값과 최솟값으로 HSV 범위를 지정했습니다. frame = cv2.GaussianBl..
2019.09.03 -
OpenCV 어플리케이션 만들기
준비 운영체제 : Windows 10 개발환경 : Andriod Studio OpenCV를 사용해 간단한 어플리케이션을 제작합니다. (그레이스케일, HSV, Smoothing 필터 구현) 안드로이드에서 OpenCV를 사용하기 위해서는 준비과정이 필요합니다. 크게 NDK방법과 Java api 방법으로 나뉩니다. NDK방법은 C++를 사용하고 준비과정이 조금 더 복잡합니다. Java api를 사용했습니다. OpenCV Java api 세팅방법 Android Studio 2.2에서 OpenCV 3.1 세팅하기 OpenCV와 Android Studio 버전에 따라 다른 내용이 생길 수 있으니 주의 바랍니다. 1. 안드로이드 SDK 다운로드 OpenCV 다운로드 페이지에서 OpenCV for Android를 다운..
2019.08.29 -
Python OpenCV filter2D를 사용한 영상처리(3)
영상에 OpenCV filter2D 사용 이미지에 사용한 필터를 영상에도 사용해 봅시다. 영상은 아이유-삐삐 MV의 일부를 사용했습니다. import cv2 import numpy as np cap = cv2.VideoCapture('./아이유.mp4') #원본영상 필터가 적용된 영상을 저장하기 위해 영상의 사이즈, 코덱을 불러옵니다. frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) print('frame_size =', frame_size) fourcc = cv2.VideoWriter_fourcc(*'XVID') #영상코덱 out1 = cv2.VideoWriter('./아이유TEST..
2019.07.25 -
Python OpenCV filter2D를 사용한 영상처리(2)
Python 으로 OpenCV 라이브러리 사용하기 영상처리를 하기 위해 OpenCV라이브러리를 사용합니다. 직접 필터를 만들기 위해서 OpenCV라이브러리의 filter2D를 사용합니다. Sobel 연산 #sobel 연산 sobelX = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]) gx = cv2.filter2D(img1, cv2.CV_32F, sobelX) sobelY = np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]]) gy = cv2.filter2D(img1, cv2.CV_32F, sobelY) mag = cv2.magnitude(gx, gy) img1 = cv2.normalize(mag, 0, 255, cv2.NORM_MIN..
2019.07.25 -
Python OpenCV filter2D를 사용한 영상처리(1)
OpenCV의 filter2D를 파이썬에서 사용해보자 목표 OpenCV 라이브러리의 filter2D를 사용하여 원본 영상에 필터를 적용시킵니다. Sobel, Laplacian, Smoothing, Weighted Average 필터를 사용하고 필터가 적용된 영상은 OpenCV의 VideoWriter를 사용하여 저장합니다. 영상에 필터를 적용하기 전에 각각의 필터들이 어떤 특성을 가졌는지 알아봅니다. Sobel, Laplacian Sobel과 Laplacian은 영상의 에지를 검출하는데 특화된 필터입니다. Sobel은 1차 미분을 사용하여 간결한 엣지검출이 가능하지만 노이즈에 약하고 Laplacian은 2차 미분을 사용하여 조금 두꺼운 에지 검출이 가능하지만 노이즈에 강한 특성을 가집니다. 자세한 내용은 ..
2019.07.18