분류 전체보기

    라즈베리파이에 OpenCV 설치하기

    사실 라즈베리파이에 OpenCV를 설치한지는 좀 시간이 지났지만 이제서야 설치 방법을 글로 남긴다. 원래 OpenCV를 설치하는 과정이 지루함의 연속이고 게다가 몇번이나 재설치를 해서 좀 진이 빠지긴 했었다. 라즈베리파이에 OpenCV를 설치하는 과정은 구글링만 좀 해도 바로 알수있지만 가장 도움을 많이 받았던 사이트는 https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/ 와 http://webnautes.tistory.com/916 이다. 우선 OpenCV 자체가 용량이 크기 때문에 16GB의 SD카드를 추천한다. 만약 메모리가 부족할 것 같다면 라즈베리파이에 기본적으로 ..

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

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

    자율주행차량 만들기(아두이노+OpenCV) #3 - 계획수정

    이전글 : 자율주행차량 만들기(아두이노+OpenCV) #2 - 차선 인식 및 조향 테스트 주문했던 카메라 모듈이 배송중 문제가 생겨서 예상보다 늦게 도착했다. 다행이 성능은 괜찮아서 바로 사용이 가능할 정도였다. 아래는 최종적으로 구성한 모습이다. (1) 차량 (2) 제어부 문제는 생각만큼 잘 작동하지는 않았다. 알고리즘은 문제가 없지만 하드웨어적이 문제가 좀 있다. 그 이유를 몇가지 나열해보면 1. 카메라의 위치가 너무 낮아 급격한 차선변경에 반응하기가 어렵다. 카메라가 좀 더 높은 위치로 이동시키면 되지만 차량자체가 너무 작아 불가능했다. 2. 조향을 막무가내로 모터를 이용해 정밀한 제어가 불가능 하다. 처음부터 걱정했던 문제였지만 역시나 서보모터를 이용한 조향이 필수적이다. 3. 차량의 전력이 부족..

    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) #2 - 차선 인식 및 조향 테스트

    이전글 : 자율주행차량 만들기(아두이노+OpenCV) #1 - 주행 테스트 차선인식쪽 코드가 어느정도 완성되어 차선 인식 및 차량의 조향장치를 테스트 해보았다. 아직 차량에 부착할 컬러카메라 모듈이 없는 관계로 (필자는 흑백 카메라 모듈만 가지고 있었다.) 급한대로 웹캠을 이용해 테스트를 진행했다. Pycharm 개발 환경에서 제작한 차선인식 프로그램이다. 차선을 인식한후 중심점을 추출해 차선이 차량으로부터 얼마나 떨어져 있는지 알수있다. 오른쪽 창의 붉은색 숫자는 중심점으로 떨어진 거리를 픽셀단위로 나타낸 것이다. 파이썬으로 아두이노와 시리얼 통신을 해야하는데 중간 매개체로 아두이노 FPS 게임 컨트롤러 2.0을 이용했다. 데모 영상이다. 차선이 차량 중심을 통과하도록 조향을 하는 간단한 원리이다. [..

    자율주행차량 만들기(아두이노+OpenCV) #1 - 주행 테스트

    매력적인 영상처리 툴인 OpenCV를 공부하면서 일종의 목표였던 자율주행 차량에 대한 구상이 어느정도 끝났다. 일단은 차량이 어느정도 완성되어 간단하게 주행테스트를 해보았다. 알다시피 OpenCV를 사용하기 위해서는 아두이노로는 어림도 없기 때문에 적어도 라즈베리파이 정도의 성능의 보드가 필요하다. 하지만 아직 라즈베리파이도 초보단계이고 해서 영상은 컴퓨터에서 처리하는 방식으로 결정했다. 덕분에 차체는 매우 간단하다. 컴퓨터로 영상을 보내줄 영상송신 장비와 모터 드라이버, 제어 데이터를 받을 nrf24l01 무선모듈, 아두이노 나노로 구성되어있다. 차량은 저렴한 장난감 자동차인데, 조향이 서보모터가 아닌 무식하게 모터로 조향하는 방식이라 다소 걱정되긴 한다. 아직 코드는 완성되지 않아 간단하게 전에 제작..

    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 버..

    Anet a8 오토레벨링 가이드

    오랜만에 3D 프린터 관련 글이다. 작년에 구매한 Anet a8을 별 불만없이 사용중 이었지만 (물론 좀 더 비싼 프린터를 사용해보면 생각이 바뀌겠지만) 뭔가 새로운 변화를 주고싶다는 생각에 소소하게 업그래이드를 진행하고 있다. 그 중 하나가 바로 Anet a8에 오토레벨링 센서를 장착하는 것이었다. 예전에 컴퓨터 모니터를 올려두던 작은 받침대 위에 프린터를 올려두고 사용중이다. 순정 상태와 크게 다를건 없고 배드테이프, 베어링, 그리고 오로레벨링 센서를 추가한 상태이다. 구매링크 필자가 구매한 오토레벨링 센서의 구매좌표가 기억이 나질 않아 비슷한 것으로 올려놓았다. 이제부터 프린터의 팜웨어를 업데이트하고 레벨링센서를 장착하는 방법을 소개하겠다. 1. 오토레벨링 센서 장착 우선 원래 장착되어있던 Z 앤드..

    유용한 화면 캡쳐프로그램 Picpick

    픽픽(PicPick)은 캡쳐기능과 이미지 에디터, 각도기, 색상추출 등의 기능도 제공하는 무료 프로그램이다. 윈도우의 그림판보다 훨씬 강력한 픽픽(PicPick)은 이미지 편집에 필요한 기본적인 기능들을 모두 포함하면서 다양한 캡쳐 기능과 부가 기능들을 제공하며 레지스트리 값을 작성하거나 시스템 폴더에 접근하지 않아 포터블 버전으로도 활용이 가능한 프로그램이다. 기본적인 전체화면 캡쳐외에 활성화된 윈도우, 컨트롤, 영역지정, 고정된 사각영역, 자유영역, 웹페이지 캡쳐의 다양한 캡쳐기능을 제공하며, 캡쳐한 이미지를 이미지 에디터를 통해 색반전, 그레이스케일, 모자이크효과, 대비 및 밝기 조절, 색도 및 채도 조절, 상하 및 좌우 대칭 이동, 90도 회전, 프레임, 그림자넣기 등의 기능을 이용하여 이미지 편..

    납축전지 충전하기

    집에 12V 납축전지가 하나 있는데 충전기가 망가졌다. 사실 망가진지는 꽤 됬는데 납축전지 특성상 가끔식 충전을 해주어야 내부 액이 굳지 않고 배터리 수명을 연장할 수 있다. 충전기 사기는 귀찮고 충전기 가격도 꽤 나가는 편이라 충전기를 직접 만들어 보기로 했다. 유튜브에 검색해보니 비슷한 방법으로 충전한다. 바로 스텝다운 모듈을 이용하는 것인데, 19V정도의 노트북 아답터를 12V로 강압하여 정전류로 충전하는 방식이다. (대부분의 배터리를 충전하는 가장 기본은 정전류이다.) 마침 저번에 구매해둔 스텝다운 모듈을 사용하기로 했다. 구매링크 이제 아답터를 준비해야 하는데 가지고있는 19V 아답터가 1개 뿐이라 급한데로 14V 3A급 아답터를 사용하기로 했다. 적어도 배터리보다 더 높은 전압의 아답터를 준비..

    알리익스프레스 USB 허브

    알리익스프레스에서 USB 3.0을 지원하는 4포트짜리 USB 허브를 구매했다. 아래는 구매좌표이다. 구매링크 7포트는 너무 많은 것 같아 4포트로 구매했으며 5V짜리 아답터도 추가로 구매했다. 배송은 알리답지 않게 9일이라는 매우 짧은 시간만에 배송되었다. (요즘 알리배송이 점점 빨라지는 것을 느낀다.) 사용해본 후기는 매우 만족이다. 제품의 마감도 좋고 (단순한 플라스틱이 아닌 약간 고무 느낌이 나는 플라스틱이다.) 또한 포트마다 전원버튼이 있어서 편리한데, 신기한것은 버튼이 눌린상태가 꺼진상태이다. 위의 사진을 보면 이해가 될것이다. USB 3.0을 지원해서 속도는 매우 빠르다. 노트북의 USB 3.0속도와 거의 동일한 것 같다. 아두이노나 라즈베리파이를 사용할때 불의의 사고로 노트북의 USB 포트가..

    아두이노로 날씨정보 출력하기[esp8266/OpenWeatherMap]

    아두이노로 날씨정보를 출력하는 방법은 다양하지만 크게 기상청 RSS, 공공데이터 포털, 그리고 OpenWeatherMap을 이용하는 방법이 주로 쓰인다. 이 중에서 OpenWeatherMap을 이용해 현재 날씨 정보를 출력해볼 것이다. 아래는 실제 작동사진이다. 우선 OpenWeatherMap의 API 키를 발급받아야 하는데 받는 방법은 블로그 초창기에 올린적이 있다. 아래 링크를 참고한다. http://diy-project.tistory.com/5 API 키 발급이 완료됬다면 아래와 같이 회로를 꾸민다. I2C 통신모듈을 장착한 LCD가 필요한데 해당 LCD에 대해서는 아래 링크를 참고하면 된다. http://diy-project.tistory.com/24 다음으로 아래의 라이브러리를 추가한다. 이제 ..

    휴대용 미세먼지 측정기 자작 #1 (준비)

    미세먼지 시즌은 지났지만 필요로 인해 휴대용 미세먼지 측정기를 자작하기로 했다.아래는 현재 제작중인 PCB 기판... EasyEDA로 제작중인데, 확실히 간단한 회로제작에는 정말 좋은 툴인 것 같다. [추가] 2018/07/19거버 파일이 완성됬다.

    esp8266에 서보모터를 연결할때 주의점...

    스마트홈 프로젝트를 준비하면서 esp8266에 서보모터를 연결하고 이것 저것 실험중이었다. 그런데 갑자기 wemos d1 mini 보드의 전원라인에서 연기가 피어오르더니 순식간에 뜨거워지며 보드가 죽어버렸다. 재빨리 USB포트를 분리해서 다행이지 하마터면 과전류로 USB포트도 죽을뻔 했다. 뭐 SBC나 회로를 좀 다루다보면 합선등의 이유로 이런상황은 자주 일어나는 편이지만 (지금까지 날린 보드도 꽤 많다.) 이번에는 상황이 좀 달랐다. 합선이 원인은 아니었는데 전원선에서 연기가 날만한 원인이 없었기 때문이다. 자세히보면 USB단자 옆 다이오드 하나가 타서 부풀어 오른 상태이다. 전원부만 나간건지 esp8266도 같이 나간건지 모르겠다. 분리해보고 칩만 따로 테스트 해볼계획. 원인을 좀 생각해보니 연결된 ..

    라즈베리파이 원격모니터링하기 (라즈베리파이 원격제어)

    라즈베리파이을 유선랜으로 제어하면 노트북하나면 충분하여 편하긴 한데, 접속할 때 마다 아이피가 바뀌어 다시 입력해야한다는 것이 정말 불편하다. 물론 검색을 해보면 고정아이피를 이용하는 방법이 자세히 나와있지만 (그런데 필자의 경우 고정아이피 설정이 안됬다. 이유는 아직도 모르겠다.) 아이피를 고정했다 하더라도 VNC서버는 수동으로 열어야한다. 그래서 WiFi를 이용한 무선랜을 통해 라즈베리파이를 제어하고 모니터링하는 방법을 소개한다. 일단 라즈베리파이를 와이파이에 연결시킨다. pi@raspberrypi: ~ $ ifconfig 위의 명령어를 입력한 뒤, 출력 결과중 wlan 0을 찾는다. 이 중 빨간색 부분에 적힌 IP 주소를 잘 기억해둔다. 이제 아래 명령어를 입력한다. pi@raspberrypi: ~..

    최근 알리에서 구매한 것들...

    평소에는 모듈이나 센서종류로 구매했는데, 라즈베리파이를 시작하면서 소소한 완제품(?) 이 더 많이 필요해졌다. 저 웹캠에 약 2배가 넘는 가격만 지불하면 4K액션캠 구매가능하다(...왠지 사야될 것 같은 느낌) 이렇게 이것저것 구매해보고싶어 지는게 알리의 매력인 것 같다. 가장 아래쪽은 지자기 센서인데, 최근 GPS탱크를 준비 중 이라 구매했다.

    라즈베리파이에 라즈베리안 설치하기 #2

    라즈베리안이 설치된 SD카드 내용을 살펴보면 boot 경로의 cmdline.txt 가 있을것이다. 이 파일을 연다. 이 파일은 라즈베리파이가 부팅될 때 실행하는 한 줄의 명령어이다. 파일 내용을 아래와 같이 수정을 한다. dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait 또는 아래 파일로 바꾼다. 또한 같은 경로에 config.txt가 존재할 것이다. 마찬가지로 파일을 열고 맨 아래줄에 다음 두줄을 추가한다. enable_uart=1force_turbo=1 SSH 통신을 활성화하기 위해서, 같은 경로의 빈 공간을 ..

    라즈베리파이에 라즈베리안 설치하기 #1

    라즈베리파이의 대표 운영체제인 라즈베리안을 설치하기 위해 아래 사이트로 이동한다. https://www.raspberrypi.org/downloads/raspbian/ 작성일 기준으로 4.14버전이 최신버전이다. 왼쪽 파일을 컴퓨터에 다운받고 압축을 풀어준다.압축을 풀면 이미지 파일이 하나 나오는데 이 파일을 SD카드에 구워주어야 한다. 방법은 다양하지만 크게 2가지 프로그램이 많이 사용되는 것 같다. 1. : https://rufus.akeo.ie/downloads/rufus-2.18p.exe 2. : https://sourceforge.net/projects/win32diskimager/files/latest/download 필자는 1번을 사용했다. 두 링크 모두 다운로드 링크인데 2번은 설치과정이 ..

    라즈베리파이 시작하기

    우연한 기회로 라즈베리파이3를 얻었다. 아직 아두이노도 제대로 못다뤄본 초심자이지만 리눅스 계열의 컴퓨터도 도전해볼 계획이다.

# 테스트용