반응형

라즈베리파이 3 관련 다음 포스팅들이 있습니다. 문제가 없는지 확인하며 포스팅 내용을 보완하기 위해 순서대로 다시 해보고 있습니다. 

[임베디드/Raspberry Pi] - Raspberry Pi 3 처음 사용해 보기

[임베디드/Raspberry Pi] - Raspberry pi 3에서 무선랜(WIFI) 사용하기

[임베디드/Raspberry Pi] - Raspberry PI 3를 VNC로 접속하여 원격 제어 (x11vnc)

[임베디드/Raspberry Pi] - Raspberry pi 3와 Android간에 bluetooth 태스트 ( 문자열 주고 받기 )



C920 연결 태스트

C170 연결 태스트

라즈베리파이의 카메라 인터페이스 활성화

VNC로 웸캠 동작 확인




구입가격이 25000원 정도인 Logitech C170 Webcam과 구입가격이 10만원정도인 Logitech HD Pro Webcam C920을 라즈베리파이 3에 연결하는 태스트를 진행 해보았습니다.  ( 지금은 C920의 개선된 버전인 C920R도 나와있습니다..)


C170 웹캠은 최대 500만 화소이고 최대 해상도는 1024 x 768를 지원하며 초당 30 프레임 (30 fps)입니다..


C920 웹캠은 최대 1500만 화소이고 최대 해상도는 풀 HD (1920 × 1080, HD 1080p)를 지원하며 초당 30 프레임 (30 fps)입니다.  이 모델의 후속 기종인 C922에서는 720p 동영상의 경우 초당 60 프레임 (60 fps)이 가능하다고 하니 구입하고 싶어집니다.


여기서 화소가 사진 찍을 경우에 지원하는 거라 실제로 동영상으로 촬영시에는 화소가 좀 떨어집니다. 



C920 연결 태스트


먼저 C920 웹캠을 라즈베리파이에 연결하였습니다.  dmesg 명령을 실행시켜보면 마지막에 아래와 같은 메시지를 볼 수 있습니다. 모델명 HD Pro Webcam C920이 보입니다. 여기서 에러가 없으면 제대로 연결된 것입니다. 

1
2
3
4
5
[19754.934881] usb 1-1.5: new high-speed USB device number 4 using dwc_otg
[19756.156751] usb 1-1.5: New USB device found, idVendor=046d, idProduct=082d
[19756.156775] usb 1-1.5: New USB device strings: Mfr=0, Product=2, SerialNumber=1
[19756.156788] usb 1-1.5: Product: HD Pro Webcam C920
[19756.156800] usb 1-1.5: SerialNumber: 721DDE0F
cs


lsusb명령을 사용하면 어느 Bus에 웹캠이 연결되었는지 확인이 가능합니다.  USB 2.0의 경우 하나의 BUS에 두 개의 웹캠을 연결하면 문제가 발생하지만 USB 3.0의 경우에는 대역폭이 더 크기때문에 문제가 없을거라고 생각됩니다.  다행히 라즈베리파이 3는 USB 3.0을 지원합니다.  추후 2 개의 웹캠을 연결해서 문제 없는지 테스트 해봐야 겠습니다.

1
2
3
4
5
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
cs


웹캠 정보를 확인해봅니다. YUYV422 포맷으로 RAW데이터를 받아올 수 있겠군요..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pi@raspberrypi:~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2
 
        Index       : 1
        Type        : Video Capture
        Pixel Format: 'H264' (compressed)
        Name        : H.264
 
        Index       : 2
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : Motion-JPEG
cs

보다 자세한 정보는 다음 명령을 통해 볼 수 있습니다. 지원하는 해상도와 fps가 표시됩니다. 640x480크기로 30프레임이 나옴을 알수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pi@raspberrypi:~ $ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.042s (24.000 fps)
                        Interval: Discrete 0.050s (20.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                        Interval: Discrete 0.100s (10.000 fps)
                        Interval: Discrete 0.133s (7.500 fps)
                        Interval: Discrete 0.200s (5.000 fps)
                Size: Discrete 160x90

-------------------------이하 생략---------------------------
cs


C170 연결 태스트

이제 C170 웹캠을 라즈베리파이에 연결해봅니다. dmesg 명령을 사용해보면 C170 모델명이 보입니다.

1
2
3
4
5
6
7
8
[  273.856891] usb 1-1.4: USB disconnect, device number 4
[  277.418757] usb 1-1.4: new high-speed USB device number 5 using dwc_otg
[  277.612212] usb 1-1.4: New USB device found, idVendor=046d, idProduct=082b
[  277.612236] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  277.612249] usb 1-1.4: Product: Webcam C170
[  277.612262] usb 1-1.4: Manufacturer:  
[  277.614921] uvcvideo: Found UVC 1.00 device Webcam C170 (046d:082b)
[  277.621426] input: Webcam C170 as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/input/input1
cs


lsusb 명령으로는 모델명은 안보이고 로지텍만 출력됩니다.

1
2
3
4
5
pi@raspberrypi:~ $ lsusb
Bus 001 Device 005: ID 046d:082b Logitech, Inc. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
cs


웹캠 정보를 확인해봅니다. C920과 마찬가지로 RAW데이터를 YUYV422 포맷으로 가져올 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
pi@raspberrypi:~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2
 
    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : Motion-JPEG
cs


640 x 480 크기로 30 프레임이 가능하다는 걸 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
pi@raspberrypi:~ $ v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUYV 4:2:2
        Size: Discrete 640x480
            Interval: Discrete 0.033s (30.000 fps)
            Interval: Discrete 0.067s (15.000 fps)
 
......................이하 생략....................
cs



이후 과정은 C170과 C920이 동일하게 진행되었습니다. 카메라 설정은 한번만 해주면 계속 유지 됩니다.



라즈베리파이의 카메라 인터페이스 활성화

이제 카메라 지원을 활성화 하기 위해 다음 명령을 실행시킵니다. 

1
pi@raspberrypi:~ $ sudo raspi-config
cs

5 Enable Camera로 이동하여 엔터를 입력합니다.


Yes를 선택하고 엔터를 입력합니다. 잠시 후 카메라 인터페이스가 활성화 되었다는 메시지가 보입니다. 확인에서 엔터를 다시 입력하면 다시 위 화면으로 돌아옵니다. 이제 Finish로 이동하여 엔터를 입력하면 리부팅해야 한다고 물어봅니다. Yes를 선택하면 SSH접속이 끊어지고 이제 라즈베리파이가 재부팅됩니다. 


다시 터미널로 라즈베리파이3에 접속하여 다음 명령을 내려보면 /dev/video0가 보입니다. 웹캠 장치를 위한 디바이스 파일이 생성된 것입니다. 

1
2
pi@raspberrypi:~ $ ls /dev/video*
/dev/video0
cs



VNC로 웸캠 동작 확인

웹캠이 제대로 동작하는지 확인하기 위해 X윈도우용 프로그램인 cheese를 설치합니다. 

1
2
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install cheese
cs


터미널에서는 카메라 영상을 볼 수 없으므로, X윈도우 환경을 실행시켜야 합니다.  그래서 일단 VNC를 사용하여 라즈베리파이 3를 연결했습니다. 자세한 과정은 아래 포스팅에 소개되어 있습니다.  물론 직접 라즈베리파이 3에 모니터, 키보드, 마우스를 연결해서 테스트해 볼 수도 있지만 번거로워서 성능과 상관없는 간단한 태스트의 경우에는 이 방법을 선호합니다. 

[임베디드/Raspberry Pi] - Raspberry PI 3를 VNC로 접속하여 원격 제어 (x11vnc)


VNC 뷰어로 라즈베리파이3에 접속한 후,  왼쪽 상단에 있는 산딸기 아이콘을 클릭하면 메뉴가 보이는데 Sound & Video - Cheese를 선택하여 실행합니다.  실행이 안되면 터미널을 열어 실행시키면 됩니다. 


1
pi@raspberrypi:~ $ cheese 
cs



웹캠으로 부터 영상이 들어오는게 보입니다.  컴퓨터에서 웹캠을 사용할 때보다 느린 걸 확인 할 수 있는데 Cheese 프로그램의 문제로 보입니다. OpenCV나 V4L 라이브러리를 이용하여 프로그램을 작성해서 테스트 해보면 30 fps 속도로 영상이 화면에 보여지게 됩니다.  


그래도 VNC로 연결함으로 인해 좀 딜레이 생겨 화면이 갱신되는건 어쩔 수 없습니다.  성능 태스트가 필요하면 라즈베리파이3에 모니터를 연결해야 합니다.


라즈베리파이3에 OpenCV 3.1 라이브러리를 설치하여 웹캠 테스트 하는 과정은 아래 포스팅을 통해 소개되고 있습니다.

[임베디드/Raspberry Pi] - Raspberry Pi 3에 OpenCV 3.1 설치 ( opencv_contrib 포함 )


반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


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

  1. 조영훈 2017.01.12 20:28

    카메라 2개를 연결하면 혹시 어떤 문제가 생길까요??

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.01.12 21:06 신고

      컴퓨터에서는 usb 2.0으로 카메라 2대를 돌리는데 대역폭 문제가 없었습니다만....
      참고 http://webnautes.tistory.com/176

      아직 라즈베리파이 3에서는 태스트 못해봤습니다.. 똑같이 usb 2.0이라 문제 없을듯합니다.

  2. 김도현 2019.05.20 13:57

    카메라 연결이랑 치즈를 통해서 보고는 있는데 프레임이 너무 떨어져요 해결방법이 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.20 13:59 신고

      치즈로 확인하면 많이 느립니다..
      opencv나 v4l 등으로 확인해보세요

  3. raspi 2020.05.06 13:52

    저희는 라즈베리파이 카메라 모듈과 usb웹캠을 각각 하나씩 연결하여 구동해보고자 합니다.
    혹시 문제가 생기거나 작동이 안될 가능성이 있나요?

  4. raspi 2020.05.06 17:03

    앞서 질문남겼었는데 혹시, usb웹캠을 이용해 mjpg스트리밍을 하려고 하는데 어떻게 해야 파이카메라가 아닌 usb웹캠과 연결할 수 있을지 알려주실 수있나요?(대부분 파이카메라로 연결되어있는 내용들만 나와있어서 어떤부분을 어떻게 변경해야 웹캠과 연결되는지 모르겠네요 ㅠㅠ)

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.06 21:59 신고

      OpenCV를 이용한 경우만 해봤습니다.

      아래 포스트를 참고하세요.

      Raspberry Pi에서 mjpg-streamer를 사용하여 웹캠 스트리밍하기
      https://webnautes.tistory.com/1261


      mjpg-streamer를 사용한 웹 스트리밍을 OpenCV에서 가져오기
      https://webnautes.tistory.com/1262


      ps. 최근에 업데이트되면서 방법이 좀 바뀌었을 수도 있습니다.

      제가 포스트 작성시 참고한 아래 링크를 우선보세요.
      https://github.com/jacksonliam/mjpg-streamer

  5. 종범 2020.05.17 20:05

    안녕하세요 USB웹캠을 이용해서 스트리밍, PiCamera로 스트리밍 모두 했습니다.
    저는 USB웹캠만을 스트리밍으로 사용하고 PiCamera는 다른 용도로 사용하고 싶습니다.

    근데 USB웹캠과 PiCamera를 두 개 모두 연결을 하고나서 mjpg.sh를 실행하면 USB웹캠이 아닌 PiCamera로 동작을 합니다..

    mjpg.sh 는 input_uvc.so 로 되어있는데도 그렇습니다..

    두 개 동시에 연결하고 스트리밍 카메라 우선순위를 웹캠으로 해서 mjpg 스트리밍은 웹캠으로 사용할 순 없을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.17 20:47 신고

      다음처럼해서 옵션에서 디바이스를 지정할수 있는지 확인해보세요

      mjpg_streamer -i 'input_uvc.so --help'

  6. 종범 2020.05.17 20:54

    mjpg.sh 를 그렇게 수정해서 하란 말씀이신가요? 그렇게 수정하고 실행을 하면 실행이 제대로 안되네요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.05.17 20:56 신고

      수정하라는게 아니라 터미널에서 저 명령을 사용해서 디바이스를 지정할수 있는 옵션이 있는지 살펴보라는 겁니다. 사정상 테스트를 지금 해볼수 없어서요

  7. 종범 2020.05.17 21:15

    찾았습니다...
    input_uvc 에서 두개를 동시에 연결하면 PiCamera가 video0 에 할당되고
    USB 카메라가 video1 에 할당 되더군요..

    video1 으로 바꾸니 웹캠으로 잘 작동합니다.

  8. 안녕하세요 2020.06.19 02:23

    cheese가 작동되디가 안되는 이유는 무엇인가요..?

  9. lee 2020.10.29 11:42

    단지 웹캠으로부터 촬영되는 화면을 실시간으로 모니터(라즈베리파이에 연결된 모니터)에 띄우는 용도로만 쓰려는데, 촬영되는 화면을 치즈 등을 이용해서 전체 화면으로 볼 수 있나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.10.29 21:03 신고

      ffmpeg나 gstreamer를 사용해보세요.

      Ubuntu에 GStreamer 설치하고 웹캠 영상 가져와보기
      https://webnautes.tistory.com/1426

      FFmpeg를 사용하여 웹캠 영상과 동영상 파일을 RTSP 스트리밍하기
      https://webnautes.tistory.com/1427

+ Recent posts