컴퓨터비전

    matplotlib, OpenCV로 데이터 clustering 하기 (cluster 개수 없이)

    clustering(군집화)는 데이터 분포를 분석하여 비슷한 집단끼리 묶어주는 기술이다. 최근 딥러닝 분야에서 이 기술을 많이 사용하는데, 꼭 딥러닝 뿐만 아니라 다양한 문제에서 유용하게 사용할 수 있다. 예를들어 필자가 이 알고리즘을 이용하는 이유는 대학교에서 출전하는 자율주행차 대회 때문인데, Lidar에서 받아온 좌표값을 분석하기 위해 사용될 예정이다. 아래와 같이 고깔 장애물을 피할때 clustering 기법을 이용하면 편하게 최적 경로의 알고리즘을 구현할 수 있을 것 이다. 사실 clustering 알고리즘은 구글링을 하면 쉽게 찾을 수 있는데 대부분의 코드가 cluster의 개수를 정해줘야 한다. 하지만 최적의 cluster의 개수도 찾을 수 있다면 더욱더 좋을 것이다.마침 stack over..

    OpenCV로 차선인식하기 [허프변환]

    허프변환(Hough transform)은 직선을 찾는 가장 유명하고 일반적인 알고리즘이다. 전에 자율주행 차를 제작했을때 (2018/08/09 - [아두이노/프로젝트] - 자율주행차량 만들기(아두이노+OpenCV) #3 - 계획수정) 차선인식과 관련해 개인적으로 많은 질문을 받았었다. 그래서 허프변환을 이용해 차선을 검출하는 방법을 소개해 볼까한다. 허프변환은 직선 차선을 검출하는 하나의 좋은 예가 될 수있지만 정밀한 검출은 어렵다는 것을 상기하길 바란다. 허프변환의 원리와 코드는 아래의 사이트를 참고했음을 밝힌다. https://docs.opencv.org/3.4.0/d9/db0/tutorial_hough_lines.html 개발환경은 파이썬 3.6x, OpenCV, 파이참이다. OpenCV 설치는 2..

    OpenCV 공 추적하기

    OpenCV를 이용해 물체를 추적하는 가장 기본적인 방법은 특정 색깔을 이용하는 방법이다. 색깔을 기반으로한 물체 추적 코드는 구글에 검색하면 수없이 나오지만 개인적으로 가장 안정적이고 정확한 코드를 소개해볼까 한다. https://www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv/ 소개하는 모든 코드는 위의 링크를 참고했다. # import the necessary packages from collections import deque from imutils.video import VideoStream import numpy as np import argparse import cv2 import imutils import time # construc..

    스틱 PC에 OpenCV 설치하기 (OpenCV+Python)

    필자가 가지고있는 PC중 가장 작고 저렴한 것은 ASUS사의 VIVO STICK PC이다. 크기는 만연필 케이스 만한데 무려 윈도우10이 탑제된 초소형 PC이다. 아래는 PC의 사양이다. 휴대하기 매우 편해 필자는 프레젠테이션 용으로 주로 사용했다. 자율주행차 프로젝트를 진행하면서 무선제어의 한계를 뼈저리게 느끼고 있었는데, 차량에 이런 초소형 PC를 탑제하면 좀 더 수월하게 작업할 수 있지 않을가 싶었다. 그래서 이번에는 이 스틱 PC에 파이썬 및 OpenCV를 설치해 사용해볼 것이다. 다만 OpenCV가 가벼운 프로그램은 아니라 2GB의 메모리를 가진 스틱 PC에서 원할히 돌아갈지는 의문이었다. 우선 OpenCV를 설치하는 과정은 여기를 그대로 따랐다. 설치 중간중간 사진으로 남겨봤다. 생각보다 설치..

    OpenCV edge 검출 (모서리 검출)

    자율주행차의 차선인식 알고리즘을 구현하면서 가장먼저 시도한 영상처리는 바로 모서리 검출 과정이었다. 대부분의 모서리 검출은 Canny 알고리즘을 이용하는데, OpenCV에서는 매우 쉽게 구현할수있다. 123456789101112131415161718import cv2import numpy as np cap = cv2.VideoCapture(0) while (1): _, frame = cap.read() cv2.imshow('Original', frame) edges = cv2.Canny(frame, 100, 200) cv2.imshow('Edges', edges) k = cv2.waitKey(5) & 0xFF if k == 27: break cv2.destroyAllWindows()cap.release(..

    OpenCV 웹캠 얼굴인식 (Python)

    OpenCV의 가장 기본적인 예제중 하나는 당연 얼굴인식 예제가 아닐까 싶다. 오직 얼굴인식을 구연하기 위해 OpenCV를 설치하는 경우도 있으니 말이다. 다른말로 하면 OpenCV를 처음 시작할때 할 수있는 예제중 가장 매력적인 예제라는 것이다. OpenCV로 얼굴인식을 하기위해서는 XML파일 하나가 필요하다. 아래에서 다운이 가능하다. 위 파일을 파이썬과 같은 디렉토리상에 놔둔뒤, 아래 코드를 실행하자. (개발환경 : Python 3.6.5, OpenCV 3.4.2, Pycharm python 3.6) 12345678910111213141516171819import numpy as npimport cv2 detector = cv2.CascadeClassifier('haarcascade_frontalf..

    OpenCV 윈도우+파이썬+파이참 개발환경 (window+python+pycharm)

    오랜만에 OpenCV 관련 글이다. 지금까지 OpenCV+Visual studio C++조합으로 OpenCV를 공부중 이었지만 설치 및 빌드시간만 2시간이 걸리는데다가 Visual studio 자체도 무거운 프로그램이라 파이썬을 이용한 OpenCV로 전향했다. 게다가 요즘은 C보단 파이썬이 대세 아닌가? Python으로 OpenCV를 설치하는 방법은 인터넷에 자세히 나와있지만 사람마다 조금씩 다르기 때문에 한가지 확실한 방법으로 정리하고자 한다. (윈도우 기준) 우선 아래 링크에서 Python을 다운받는다. https://www.python.org/downloads/windows/ Python의 버전은 최신버전을 받아도 무방하나 (작성일 기준 3.7.0이 최신버전이다.) 몇몇 라이브러리들은 3.6.X 버..

    OpenCV - 사진 출력하기

    개인적인 취미로 OpenCV를 공부하면서 기록을 남겨보기로했다. 어쩌면 이 글이 OpenCV를 시작하는 사람들에게 도움이 될지도 모른다. OpenCV는 Visual studio 2017로 빌드한다. 먼저 간단한 이미지를 불러와 출력하는 예제를 실행해보았다. [소스코드] 1 2 3 4 5 6 7 8 9 10 11 #include int main() { IplImage *image = cvLoadImage("apple.png"); cvNamedWindow("사과",1); cvShowImage("사과",image); cvWaitKey(0); cvReleaseImage(&image); cvDestroyWindow("사과"); return 0; } Colored by Color Scripter cs 사용된 이미지..

# 테스트용