라즈베리파이 카메라 코드 - lajeubelipai kamela kodeu

라즈베리 파이 4에서 파이썬과 OpenCV를 사용하여 카메라 촬영 테스트를 해보았다.

카메라 모듈

opencv python 설치

ubuntu@ubuntu:~/workspace$ pip install opencv-python Collecting opencv-python Downloading opencv_python-4.5.3.56-cp38-cp38-manylinux2014_aarch64.whl (34.2 MB) |████████████████████████████████| 34.2 MB 34 kB/s Collecting numpy>=1.19.3 Downloading numpy-1.21.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.1 MB) |████████████████████████████████| 13.1 MB 71 kB/s Installing collected packages: numpy, opencv-python Successfully installed numpy-1.21.2 opencv-python-4.5.3.56

파이썬 테스트 코드 작성

ubuntu@ubuntu:~/workspace$ vim camtest.py

camtest.py의 내용을 아래와 같이 작성한다.

import cv2 # open camera cap = cv2.VideoCapture('/dev/video0', cv2.CAP_V4L) # set dimensions cap.set(cv2.CAP_PROP_FRAME_WIDTH, 2560) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1440) # take frame ret, frame = cap.read() # write frame to file cv2.imwrite('image.jpg', frame) # release camera cap.release()

작성된 camtest.py를 실행하면 이미지 촬영이 되고 결과로 image.jpg 파일이 생성된다.

ubuntu@ubuntu:~/workspace$ python3 camtest.py ubuntu@ubuntu:~/workspace$ ls camtest.py image.jpg

이미지 파일을 PC로 가져오기

파워쉘을 열어 scp를 통해 이미지 파일을 로컬로 복사하여 이미지 확인한다. 여기서는 C:\Users.\windy\image.jpg 와 같이 복사된다.

PS C:\Users\windy> scp :/home/ubuntu/workspace/image.jpg ./

이미지 파일 확인

촬영 결과 이미지

라즈베리파이 CCTV - 1. 라즈베리파이로 사진, 동영상 촬영하기 (파이썬)

라즈베리파이 CCTV 프로젝트 첫 단계입니다. 이번에는 라즈베리파이로 사진 촬영과 동영상 촬영을 해보도록 하겠습니다. 파이썬(Python) 언어를 사용하겠습니다.

준비물 : 라즈베리파이, 라즈베리파이용 카메라

라즈베리파이 전용 카메라를 사용했습니다. 따로 펌웨어를 설치할 필요 없이 라즈베리에 바로 사용 가능하기 때문에 라즈베리에 사용하기에는 제일 편리합니다. 다른 카메라(웹캠 등)로는 어떻게 하는지는 잘 모르겠네요.

목차
1. 라즈베리파이 설정과 카메라 라이브러리 설치
2. 사진 촬영하기
3. 동영상 녹화하기
4. 일정 주기마다 동영상을 녹화하여 저장하게 하는 CCTV 기능 구현하기
- 다음 계획
- 부록

1. 라즈베리파이 설정과 카메라 라이브러리 설치

터미널에
sudo raspi-config
를 입력하고 엔터를 누르면 아래와 같은 설정창이 뜰겁니다.

5번 옵션에서 카메라를 켜는 설정을 해줍니다.

그 다음 picamera 라는 라이브러리를 설치해줍니다. 터미널에
sudo apt-get update        (업데이트는 항상 필수)
sudo apt-get install python-picamera
로 picamera를 설치하고 그 다음에 라즈베리파이의 펌웨어를 업데이트하기 위해
sudo rpi-update
를 해줍니다.

이제 라즈베리파이 카메라를 사용할 준비가 되었습니다. 위와 같이 라즈베리파이 카메라와 라즈베리파이를 연결해줍니다.

카메라를 테스트하기 위해  (이거는 라즈베리파이 전용 카메라에만 해당)
raspistill -v -o test.jpg
를 터미널에 입력합니다. 그려면 프리뷰 이미지가 뜨고 사진이 /home/pi 에 test.jpg로 저장되어있을겁니다.

2. 사진 촬영하기

picamera에서 사진 촬영하는 방법을 알려드리겠습니다. (자세한 설명에 대한 영어 원문 링크는 맨 밑에 있습니다.)

import picamera 라이브러리를 임포트합니다. camera = picamera.PiCamera() 파이카메라 객체 생성 camera.resolution = (1024,768) 카메라 화질 설정 camera.start_preview() 카메라 프리뷰 보여주기 시작 camera.stop_preview() 프리뷰 멈추기 camera.capture('파일명.jpg') 사진 촬영 후 파일명으로 저장

위는 제가 만든 파이썬 예시입니다. 이걸 실행하면 다음과 같이 파이썬 파일과 같은 경로에 사진이 저장되어있을겁니다. 파일명은 년-월-날짜 시간:분:초.jpg로 저장되게 해놓았습니다.

좌측: 카메라 위치 세팅 우측: 카메라 촬영 결과

초점이 맞지 않는군요. 초점을 맞추려면 렌즈 앞쪽 검은 플라스틱 부분을 시계방향 도는 반시계방향으로 돌려주면 됩니다.

물론 위와 같이 터미널에서도 실행할 수 있습니다.

3. 동영상 촬영하기

#동영상 녹화 시작 camera.start_recording(output = '파일명.h264') #10초동안 녹화하기 camera.wait_recording(10) #동영상 녹화 종료 camera.stop_recording()

위의 예시는 5초동안 동영상을 촬영합니다.

실행을 확인해보면 다음과 같이 녹화가 되어있는거를 볼 수 있습니다.

좌측: 파이썬 실행 우측: 동영상 결과 확인(아직 초점 맞추기 전이네요)

4. 일정 주기마다 동영상을 녹화하여 저장하게 하는 CCTV 기능 구현하기

위와 같이 10초동안 동영상을 녹화해서 저장하고 그것을 무한반복하는 예제를 만들어봤습니다. savepath의 경로에 저장합니다.

위와 같이 10초 또는 1초 더걸린 주기마다 동영상이 저장됩니다. 조금 더 걸리는 것은 다시 녹화 시작하는 딜레이 같네요.
무한 반복을 해놓았기 때문에 종료하려면 터미널에 Ctrl + C 를 눌러줍니다.(터미널에서 실행 중지 명령)
그러면 종료가 됩니다.

잘 저장된 것을 볼 수 있습니다.

다음에 해볼 것:
- 네트워크로 스트림하기
- 움직임 감지해서 자동으로 녹화 시작&종료 하기

과연 다음이 언제일까요?

부록:

Toplist

최신 우편물

태그