반응형

Raspberry Pi Camera Module( pi camera )는 USB 장치가 아니라서 연결을 해도 바로 /dev/video0 디바이스 파일이 생성되지 않습니다.

 

별도의 드라이버 모듈을 로드해야 /dev/video0 파일이 생성됩니다. 




마지막 업데이트 - 2018. 10. 2



MobaXterm 터미널을 사용하여 Raspberry Pi에 SSH 접속 후  테스트를 진행했습니다.



1. pi camera가 정상적으로 연결이 되었는지 확인합니다.

supported와 detected값이 모두 1이라면 카메라 연결이 성공적으로 이루어진 상태입니다. 

 

pi@raspberrypi:~ $ vcgencmd get_camera
supported=1 detected=1



두 값중 하나라도 0으로 나오면 아래 포스팅의 1-7, 1-8, 1-9를 진행해서 카메라 모듈 연결을 다시 해보면 해결됩니다. 

 

Raspberry Pi Camera Module( pi camera ) 사용하는 방법

https://webnautes.tistory.com/1883 




2. modprobe 명령을 사용하여 bcm2835-v4l2 모듈을 커널로 로드합니다.

 

pi@raspberrypi:~ $ sudo modprobe bcm2835-v4l2




3. /dev/video0 파일이 생성됩니다.

 

pi@raspberrypi:~ $ ls /dev/video0 -l
crw-rw----+ 1 root video 81, 0 Jun 25 15:57 /dev/video0



문제가 있다면 dmesg 명령 실행시 다음과 결과가 같은지 확인해보세요.

 

pi@raspberrypi:~ $ dmesg

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

[ 1154.414739] media: Linux media interface: v0.10
[ 1154.439142] Linux video capture interface: v2.00
[ 1154.462701] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
[ 1154.477131] bcm2835-v4l2: scene mode selected 0, was 0
[ 1154.477477] bcm2835-v4l2: V4L2 device registered as video0 - stills mode > 1280x720
[ 1154.482953] bcm2835-v4l2: Broadcom 2835 MMAL video capture ver 0.0.2 loaded.




4. 동작 확인을 위해 cheese 프로그램을 설치한 후.. 실행시켜 봅니다. cheese 프로그램이 느리게 동작해서 실제로 사용할 수는 없습니다.

 

MobaXterm를 사용하면 X윈도우를 띄우지 않고도 GUI 프로그램을 실행시킬 수 있습니다.

 

pi@raspberrypi:~ $ sudo apt-get install cheese

pi@raspberrypi:~ $ cheese

 




5. 부팅될 때마다 자동으로 bcm2835-v4l2 모듈을 커널에 로드시키려면 /etc/modules 파일에 다음처럼 추가해주면 됩니다. 

( 참고 https://www.feeditout.com/raspberry-pi-3-csi-camera-motion-devvideo0/ )

 

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

i2c-dev
bcm2835-v4l2




6. OpenCV에서 사용시에는 다음처럼 0대신에 -1을 open함수의 아규먼트로 사용해야 합니다. 

0을 사용하게되면 카메라가 오픈되기를 무한히 대기하게 됩니다. 



C++ 코드의 경우

 

VideoCapture cap;
cap.open(-1);



Python 코드의 경우

 

cap = cv2.VideoCapture(-1)




반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts