ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Raspberry Pi Camera Module( pi camera )를 위해 /dev/video0 생성하는 방법
    Raspberry Pi/Camera 2018.10.02 20:31


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


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



    관련 포스팅


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

    http://webnautes.tistory.com/929   


    Raspberry Pi 3에서 Raspberry Pi Camera Module을 인식시켜 사용해보는 과정을 다루고 있습니다.




    2. Raspberry Pi Camera Module( pi camera )를 위해 OpenCV + raspicam 사용하기

    http://webnautes.tistory.com/956  




    마지막 업데이트 - 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 ) 사용하는 방법

    http://webnautes.tistory.com/929    




    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)





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

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

    유튜브 구 독 하 기
    후 원 하 기


    댓글 45

    • 안녕하세요 2018.10.09 15:51


      다름이아니오라 카메라 확인차 한장 사진찍어봤는데요 다음과 같은 오류가 뜨네요

      mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
      mmal: camera component couldn't be enabled
      mmal: main: Failed to create camera component
      mmal: Failed to run camera app. Please check for firmware updates

      파이캠 업데이트도 해주었고 vcgencmd get_camera
      supported=1 detected=1 둘다 1되어있는것도 확인하였구요 모듈도 로드 했습니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.09 19:08 신고


        suso raspi-config를 실행하여 카메라가 활성화 되있나 확인해보세요

      • 안녕하세요 2018.10.10 00:07


        실행되어있습니다 혹시 물리적인문제일까요?

      • 안녕하세요 2018.10.10 01:03


        하루 사이에 갑자기 카메라가 안되는데,
        바뀐것은 이번에 새로 sd카드에 18년 6월 버젼 라즈비안 깔았거든요.이번버전에 버그같은게 있나요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.10 07:33 신고


        같은 버전으로 문제 없었습니다..

        혹시 모르니 펌웨어 업데이트를 해보세요.

        sudo rpi-update

      • 안녕하세요 2018.10.11 16:05


        펌웨어 업데이트 해줘도 안되네요...
        다시 라즈베리를 처음 켜고 스틸컷을 몇번 찍는 건 되서 동영상촬영을 하려니 오류가 나고 그 다음에 다시 스틸컷을 찍어보니 오류가 다시 납니다. 스틸컷의 오류입니다. (mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
        mmal: camera component couldn't be enabled
        mmal: main: Failed to create camera component
        mmal: Failed to run camera app. Please check for firmware updates
        )
        그래서 dmesg 를 다시 쳐보니 다음과 같은 오류가 나오네요
        [ 90.369019] bcm2835-v4l2: buffer_prepare data will not fit into plane (199680 < 204800)
        [ 90.369086] bcm2835-v4l2: buffer_prepare data will not fit into plane (199680 < 204800)

        영상촬영 코드는 다음과 같고
        import cv2
        import numpy as np

        cap = cv2.VideoCapture(0)

        while True :
        ret, frame = cap.read()
        cv2.imshow("frame",frame)

        key = cv2.waitKey(1)
        if key==27:
        break

        cap.release()
        cv2.destroyAllWindows()

        이에 따른 오류는 다음과 같습니다.
        Traceback (most recent call last):
        File "/home/pi/project/test.py", line 8, in <module>
        cv2.imshow("frame",frame)
        cv2.error: OpenCV(3.4.3) /home/pi/opencv/opencv-3.4.3/modules/highgui/src/window.cpp:364: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

        항상 신경써 주셔서 감사합니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.11 16:51 신고


        혹시 라즈베리파이 카메라 연결선이 접촉불량이 아닌가 싶네요..


        다음 포스팅에 나온 라이브러리를 설치하고 OpenCV 없이 하는걸 해보세요..

        /dev/video0 생성없이 가능한 방법입니다.

        http://webnautes.tistory.com/956

      • 안녕하세요 2018.10.11 17:27


        방금 http://webnautes.tistory.com/956 보고 따라해봤는데요
        mmal: mmal_vc_port_enable: failed to enable port vc.ril.camera:out:1(BGR3): ENOSPC
        mmal: mmal_port_enable: failed to enable port vc.ril.camera:out:1(BGR3)(0x478ef0) (ENOSPC)
        camera video callback2 erroropen Failed to create camera component/home/pi/raspicam-0.1.6/src/private/private_impl.cpp 102
        Error opening the camera

        라뜨네요...

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.11 17:30 신고


        혹시 모르니 카메라 선을 다시 연결해보세요..

        하드웨어적 문제 같네요.
        라이브러리 문제는 아닌듯해요

      • 안녕하세요 2018.10.11 17:59


        선바꿨는데도 안되네요... 혹시 dmesg에 Under-voltage detected! 이런글도있는데 카메라 문제일까요 라즈베리 문제일까요....

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.11 18:01 신고


        카메라 문제일 가능성이 높을듯 합니다.

      • 안녕하세요 2018.10.11 18:02


        며칠간 정말 감사합니다!

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.10.11 19:48 신고


        혹시 아규먼트로 다음처럼 -1을 주어봤나요?

        cv2.VideoCapture(-1)

    • Favicon of http://blog.naver.com/dbghks776 BlogIcon YUHWAN 2019.02.13 22:44


      hello i want to type

      VideoCapture cap;
      cap.open(-1);

      this code but i don't know where it is

      could you tell me where this code is?
      where folder and file?

    • mr oh 2019.02.28 15:06


      저 라즈베리파이에 raspistill 등 터미널에서 찰영 동영상(5초)찰영 다 문제 없이 되는데

      편집기에서 파이썬으로 cap = cv2.VideoCapture(-1) 으로 해봤는데 can`t find camera divice 라뜨는데 혹시 무슨 이유인지 아시나요??

    • yeon 2019.03.18 17:48


      안녕하세요
      보고 잘 따라했는데 VideoCapture(-1) 하면 실행이 되지않고 GST_IS_ELEMENT 오류가 뜹니다
      ls /dev/video*를 하면 /dev/video0, /dev/video10, /dev/video11, /dev/video12 총 4개가 뜹니다... 연결된 카메라는 라즈베리 파이 카메라 하나입니다..
      혹시 도움을 주실수 있을까요?

    • 김영재 2019.05.08 17:20


      안녕하세요.. 멈춤보단 천천히라도님 블로그 보면서
      라즈베리 파이와 파이썬 공부를 너무 도움 받아가며 잘하고있습니다.

      제가 라즈베리파이에 파이썬으로 카메라를 오픈해서 영상처리하는 소스코드 위에
      fsp압력 센서와 조합하여 결과물을 만들고있는데

      문의 사항이 있어 이렇게 글을 남깁니다.

      1. opencv를 사용하여 영상처리 를 하면 정상 적으로 동작
      2. 쓰레드를 생성하여 fsp i2c data를 읽어오면 동작
      3. opencv영상처리 + fsp i2c 를 같이 초기화 하고 실행하면 i2c 동작 안함


      현재 증상은 이렇습니다. i2c bus 초기화 하고 data를 read 하면 정상적으로 읽혀오는데
      카메라를 오픈한다음 읽기 시작하면 i2c read error이 발생합니다.
      execpt error는 프린트 되지 않고... 어떤이유때문에 이러고 어떻게 사용해야 동시에 사용가능한지 궁금해서 질문 드려요...
      답변 부탁드립니다.. 너무 감사합니다.

      카메라 오픈은
      cap = cv2.VideoCapture(-1) 이렇게 오픈하여 사용하였습니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.08 18:25 신고


        감사합니다 : )

        다음 글을 참고해보세요..

        https://www.raspberrypi.org/forums/viewtopic.php?t=182931

      • 김영재 2019.05.09 15:37


        알려주신 참고 사이트를 참고하여 확인해봤는데... 여전히 안되네여
        혹시 이런증상에 대해 격어보신적은 없으세여? 다른 구글 사이트들 뒤져봐도
        명확한 답이 안보이네여....

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.09 15:40 신고


        라즈베리카메라를 사용중이라면 i2c와 같이 사용시 문제가 될수도 있다고 합니다.

        usb 웹캠이라면 문제 없어보입니다.

        i2c와 카메라를 같이 써본적은 없습니다.

      • 김영재 2019.05.09 15:47


        그래서 제가 웹캠을 사용하여 확인해 보았는데 동일한 현상이 일어납니다.

        cap = cv2.VideoCapture(0)으로 오픈하여 사용하였습니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.09 15:51 신고


        웹캠에서 캡쳐되는 이미지의 해상도를 낮추어 보세요

      • 김영재 2019.05.09 16:11


        해상도가 이미 낮은 상태라 이문제와 다른거 같습니다..
        왜 안되는지 갈피를 못잡겟네여..

      • 김영재 2019.05.09 16:14


        해상도와 상관없이 오픈되는 순간 i2c data read error가 발생하네여...
        지금 프로세스 따로 분리시켜서 실행시켜 보고있습니다...
        각각 실행시켯을때는 잘되는데
        그리고 i2c 에러가 발생하고 난 다음부터 다시 다 종료하고 실행시켜도 i2c에러는 동일하네여.. 재부팅하면 되고

    • 공대생 2019.05.15 12:54


      안녕하세요 다름이 아니라 vcgencmd 명령에서 둘다 -1이 나왔는데

      modprobe 명령을 사용 하니

      modprobe: FATAL: Module bcm2835-v412 not found in directory /lib/modules/4.14.98-v7+
      이런 코멘트가 나오더군요.. 펌웨어 업데이트는 해놓았습니다
      혹시 도움을 주실 수 있으실런지..

    • 닥스퍼 2019.06.09 15:57


      1. dev/video 가 0,10,1,12 총 4개가 나오는데 우선 video0을 사용하였습니다. 문제가 될까요?
      2.dmesg를 하면
      bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy 라고 뜹니다.
      cheese를 실행하였을 때도 터미널창에는
      Gtk-warning : Theme parsing error
      cheese-warning: Device 'dev/video0' is busy
      라고 뜨고
      Cheese 창에는
      There was an error playing video from the webcam 이라고 뜹니다.
      어느 부분에 문제가 있는걸까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.06.09 16:24 신고


        카메라 한개인데 video 디바이스가 4개가 나온다는 건가요?

        이상하군요.. 하나만 있어야 하는데

        라즈베리파이를 재부팅해서 다시 해보세요.

        그리고
        vcgencmd get_camera 명령을 하면 둘다 1로 나오는지도 체크해보세요.

      • 닥스퍼 2019.06.09 16:27


        재부팅해도 계속 4개가 뜨네요..
        support,detect 는 계속 1로 나옵니다!

      • 알려주세요ㅠ 2019.10.05 16:51


        저도 또한 위에분들처럼 dev가 0/10/11/12가 뜨네요 0만떠야 제대로 환경이 잡히는건가요?

    • 2019.09.15 21:34


      pi@raspberrypi:~ $ cheese
      Unable to init server: 연결할 수 없습니다: 연결이 거부됨

      ** (cheese:1407): ERROR **: cheese-application.vala:86: Unable to initialize lib cheese-gtk
      추적/중단점 함정


      이렇게 에러가 뜨는 데 왜 그런걸까요??ㅠㅠ

      제가 지금 노트북이랑 라즈베리파이랑 핫스팟 연결을 통해서 진행하고 있는데 혹시 시리얼통신이 아니기 때문에 카메라가 안되는 걸까요..??

    • 제발알려주세요ㅠㅠ 2019.10.05 16:43


      안녕하세요
      파이카메라로 영상을 받ㅇ려고합니다.
      모든 절차를 완벽하게 따라하는데 마지막에 cheese만 치면 cheese창이 뜨는데 아무것도 안뜨는 검은창만 뜹니다.
      마지막에 남겨놓으신 무한로딩 상태인것 같은데 알려주신것처럼
      0을 -1로 바꿔야 한다는 부분이 어느 부분, 어느 코드에서 0을 -1로 바꿔주어야 하는건가요?

      • 알려주세요 2019.10.05 16:51


        저도 또한 위에분들처럼 dev가 0/10/11/12가 뜨네요 0만떠야 제대로 환경이 잡히는건가요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.05 22:14 신고


        웹캠에서 영상캡처하는 코드에서 포스트의 6번 부분을 수정하면 됩니다.


        dev는 0만 보이지 않을 수 있습니다.

      • 모르겠어요 2019.10.06 22:30


        cap = cv2.VideoCapture(-1)
        이부분 말씀하시는것 같은데 이 코드를 정확히 어느 폴더나 어느 소스파일에서 바꿔야하는지 위치나 아니면 무슨 커맨드치고 들어가서 저 코드를 수정해야하는지를 모르겠습니다 ㅠㅠ 수정해야겠다는건 인지하고, 어떻게 바꿔야하는지는 아는데 어디서 바꿔야할지를 모르겠네요 ㅠㅠ 부탁드립니다!

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.07 17:19 신고


        다음 예제에서 0을 -1로 변경해서 테스트해보세요..

        C++이라면
        https://webnautes.tistory.com/1351


        Python이라면
        https://webnautes.tistory.com/577



    • 1212 2019.11.19 18:55


      안녕하십니까
      이 글을 통해 open cv 를 배우고 있는 대학생 입니다!
      다름이 아니라 dmesg 명령을 실행 하였을 때

      [ 1021.567542] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567582] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567621] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567647] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567671] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567693] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567731] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567767] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567792] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy
      [ 1021.567815] bcm2835-v4l2: vidioc_s_fmt_vid_cap device busy


      다음과 같은 오류가 나타날 뿐만 아니라
      pi@raspberrypi:~ $ ls /dev/video*
      /dev/video0 /dev/video10 /dev/video11 /dev/video12
      다음과 같이 video0 이아니라 3개나 더 나타나는 오류가 발생하였습니다 ㅠㅠ
      치즈도 당연히 실행이 안되고요...
      어디가 문제인지 여쭤보고 싶습니다!!

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.19 21:39 신고


        파이 카메라는 VideoCapture의 아규먼트로 0 대신에 -1을 사용해야 인식이 됩니다.

        카메라 디바이스 파일이 여러개 생기는 원인은 알수 없습니다.

Designed by Tistory.