행복한 하루

라즈베리파이 4 Model B (2GB) 3.5inch LCD와 카메라 연동 테스트 (2) 본문

RaspberryPi

라즈베리파이 4 Model B (2GB) 3.5inch LCD와 카메라 연동 테스트 (2)

변화의 물결 2021. 5. 5. 01:00

 

 

안녕하세요.

 

  이전 편에서 LCD 작업을 했다면 이번에는 카메라 영상을 실시간으로 LCD 화면에 출력해주도록 하겠습니다. 바로 출력할 수도 있겠지만, OpenCV를 이용해서 영상처리도 준비할 수 있도록 OpenCV 설치까지 같이해보도록 하겠습니다.

 

5inch HDMI와 3.5Inch LCD 장착

  그리고 영상 출력되는 것 등 확인하기 위해서 5인치 HDMI 입력을 지원하는 LCD에서 추가로 준비했고 명령어 입력을 위해 무선 키보드와 마우스를 사용했습니다. 그래서 처음에는 조금 많은 것들이 연결되어 있습니다.

 

  이전 제품은 커넥터가 HDMI로 되어있어 크게 문제 될 것이 없었지만, 이번 제품은 일반적으로 사용하지 않는 Micro HDMI 케이블을 필요로 하므로 라즈베리 파이 4를 이용하려면 HDMI to micro HDMI 케이블이 필수로 보입니다.

 

  카메라 작업을 하면서 알았지만, SPI, I2C 활성화할 때 카메라 설정도 활성화시키는 것이 유리합니다. 그렇지 않으면 3.5인치에서 sudo raspi-config 들어가서 설정 화면을 보기 힘듭니다.

 

P1 Camera 활성화 메뉴

1. 테스트 CMOS 카메라 스펙

  - ASUS Tinker Board를 테스트하기 위해 가지고 있던 CMOS 카메라로 테스트했습니다. 라즈베리파이와 연결해서 동작하는 것에도 문제없었습니다. 그런데 현재 동일한 제품을 구매할 수 없었습니다. 

 

Camera Module for Tinker Board (Adjustable Focus)

  - 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  

 

 

Comments