행복한 하루
라즈베리파이 4 Model B (2GB) 3.5inch LCD와 카메라 연동 테스트 (2) 본문
안녕하세요.
이전 편에서 LCD 작업을 했다면 이번에는 카메라 영상을 실시간으로 LCD 화면에 출력해주도록 하겠습니다. 바로 출력할 수도 있겠지만, OpenCV를 이용해서 영상처리도 준비할 수 있도록 OpenCV 설치까지 같이해보도록 하겠습니다.
그리고 영상 출력되는 것 등 확인하기 위해서 5인치 HDMI 입력을 지원하는 LCD에서 추가로 준비했고 명령어 입력을 위해 무선 키보드와 마우스를 사용했습니다. 그래서 처음에는 조금 많은 것들이 연결되어 있습니다.
이전 제품은 커넥터가 HDMI로 되어있어 크게 문제 될 것이 없었지만, 이번 제품은 일반적으로 사용하지 않는 Micro HDMI 케이블을 필요로 하므로 라즈베리 파이 4를 이용하려면 HDMI to micro HDMI 케이블이 필수로 보입니다.
카메라 작업을 하면서 알았지만, SPI, I2C 활성화할 때 카메라 설정도 활성화시키는 것이 유리합니다. 그렇지 않으면 3.5인치에서 sudo raspi-config 들어가서 설정 화면을 보기 힘듭니다.
1. 테스트 CMOS 카메라 스펙
- ASUS Tinker Board를 테스트하기 위해 가지고 있던 CMOS 카메라로 테스트했습니다. 라즈베리파이와 연결해서 동작하는 것에도 문제없었습니다. 그런데 현재 동일한 제품을 구매할 수 없었습니다.
- Image Sensor : 5 mega Pixel OV5647
- CCD size : 1/4inch
- Resolution: 5 Megapixels
- Lens: Manually adjustable
- Infrared Night Vision Function: None
- Maximum viewing angle: 75.7 °
- Board Size: 25 mm x 24 mm
- Interface : CSI (Camera Serial Interface)
2. OpenCV 설치 방법
- 실시간 영상을 LCD로 보려면 간단하게 Python 프로그램과 OpenCV를 설치를 해야 합니다. 프로그램 코드는 간단하지만, OpenCV에 관련된 라이브러리를 다운로드하는데 시간이 오래 걸립니다.
- 참고삼아 설치해서 안되었던 내용도 공유드립니다.
1) Raspberry 4 Model B, OpenCV설치 안되었던 내용
- 링크를 따라 다운로드하여 설치했습니다.
https://blog.naver.com/roboholic84/221533144081
- 오랜 시간 설치하다가 아래와 같은 에러가 발생한다면 추가 패키지를 설치해주고 다시 실행합니다.
Command "python setup.py egg_info" failed with error code 1 in …
해결했던 방법 : $ sudo -H pip install --upgrade --ignore-installed pip setuptools
- 마무리하고 간단하게 vi test.py 파일을 만들어 실행해봅니다.
import cv2
print(cv2.__version__)
$ sudo python test.py로로 실행해봅니다. 그런데 아래와 cv2 모듈을 못 찾는다고 에러가 나와서 다른 방법을 찾아야 했습니다. ( 만약 정상적으로 설치되었다고 생각되면 python3으로 실행 한번 해보시기 바랍니다 )
"import cv2 no module named cv2"
참고로, 아래 링크의 소스는 대소문자 문제로 에러 발생했습니다. (에러 사항 잡아서 실행하면 작동합니다.)
https://m.blog.naver.com/icbanq/221082121182
2) Raspberry 4 Model B, OpenCV설치 완료 후 카메라 테스트 성공한 방법
- 1) 번 경우도 동일하지만, 아래 명령어로 기존 패키지를 최신 버전으로 만들어 주고 시작합니다.
$ sudo apt-get update (설치된 패키지에 새로운 패키지 리스트를 업데이트)
$ sudo apt-get upgrade (설치한 패키지들을 최신 버전으로 업그레이드하는 명령어, update 가져온가 져 온 패키지들의 최신 버전에 맞게 업그레이드)
- 아래 링크 내용 중 "2. OpenCV 컴파일 전 필요 패키지 설치" 까지만 설치합니다. 그리고 링크를 보시면 패키지마다 어떤 내용인지 설명을 적혀있습니다.
링크 내용 중 "3. OpenCV 컴파일 및 설치" 부분까지 따라 해도 되지만 파이썬으로 테스트해볼 경우 아래 링크처럼 어렵게 설치할 필요 없이 간단한 명령어로 설치할 수 있습니다.
https://make.e4ds.com/make/learn_guide_view.asp?idx=116
>>>> 필수 패키지 설치
$ sudo apt-get install build-essential cmake
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy
>>>> 아래부터는 추가하시고 싶은 분만 추가 시작
$ sudo apt-get install libv4l-dev v4l-utils
$ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
$ sudo apt-get install libatlas-base-dev gfortran libeigen3-dev
<<<< 아래부터는 추가하시고 싶은 분만 추가 끝
- 터미널 창에 아래와 같이 입력하여 python용 openCV를 설치합니다. 설치하는데 시간이 조금 걸립니다.
$ python -m pip install opencv-python
- 설치가 완료되면 버전 정보를 확인하는 소스 코드를 실행해봅니다.
$ vi test.py 파일을 만들어
import cv2
print(cv2.__version__)
$ sudo python test.py로 실행해봅니다. 그러면 현재 버전에 맞게 나타납니다. (4.5.1)
- 카메라 영상을 보기 위한 python 코드를 작성합니다.
$ vim real_cam.py
import cv2
cap = cv2.VideoCapture(0) #카몌라 불러오기
if cap.isOpened() == False: #카메라 열림 확인
exit()
while True :
ret, img = cap.read() #카메라 읽기
cv2.imshow('preview', img) #읽은 이미지 보여주기
if cv2.waitKey(10) >= 0 : #10ms간 대기, 입력이 있으면 종료
break
# 연결 끊기
cap.release()
cv2.destroyAllWindows()
- real_cam.py 소스를 실행합니다.
$ sudo python real_cam.py
- 'nonetype' object is not iterable 에러가 발생할 경우
failed with error code 1 in /tmp/pip-install-9ygc7v/opencv-python
$ sudo python3 real_cam.py // python3로 하면 정상적으로 동작합니다.
4. 실행 결과
- 전원 케이블만 남기고 다른 선을 제거하고 실행시켜 봅니다. 그러면 imshow를 통해서 LCD 화면으로 볼 수 있습니다.
- 최적화된 코드가 아니라서 끊어지는 것처럼 보입니다. 이번의 코드는 간단하게 테스트 정도라고 보시면 좋을 것 같습니다.
<참고 사이트>
1. 라즈베리파이4 B 라즈비안 설치 및 원격 접속
https://blog.naver.com/elepartsblog/221726825667
2. 글자 깨짐 현상 한글 설치법
https://m.blog.naver.com/icbanq/221690905902
3. 3.5인치 라즈베리파이 터치 디스플레이 XPT2046(480 x 320) 설치하기
https://m.blog.naver.com/typhoon8784/221482011869
4. 라즈베리파이에 OpenCV 설치하기
https://blog.naver.com/roboholic84/221533144081
5. Getting started with the Camera Module
https://projects.raspberrypi.org/en/projects/getting-started-with-picamera
'RaspberryPi' 카테고리의 다른 글
RaspberryPi Pico에 연결된 I2C 모듈의 주소 알아내기 (0) | 2021.10.13 |
---|---|
라즈베리파이 랜(UTP) 선으로 전원 공급하기 (PoE HAT 모듈 테스트) (0) | 2021.07.28 |
라즈베리파이 4 Model B (2GB) 3.5inch LCD와 카메라 연동 테스트 (1) (0) | 2021.05.04 |
라즈베리파이 프로젝트(3) - 원격 데스크톱 연결 해보기 (0) | 2020.09.17 |
라즈베리파이 프로젝트(2) - 무선 네트워크 파일 설정과 ssh 접속하기 (0) | 2020.09.10 |