Raspberry Pi 3, Camera

Camera Hardware, CPU -> VCHI -> GPU, shared RAM, MMAL

Camera Module Usage

  • raspistill, capturing still photographs with the camera module
  • raspivid, capturing video with the camera module

API / Programmierschnittstelle

Wikipedia

Video4Linux (V4L) => V4L2 für Version 2
Video for Windows (VfW) (alt) => Windows 3.1 (1992)
Windows Driver Model (WDM) (alt)
Windows Driver Frameworks (WDF, formerly Windows Driver Foundation) (ab Windows 2000 bis Windows 10)
DirectShow (war Teil von DirectX, ist nun Bestandteil der Windows-Plattform)

linuxtv.org (official)

Development: Video4Linux APIs => Video4Linux2 V4L2

Tutorials

How to use V4L2 Cameras on the Raspberry Pi 3 with an Upstream Kernel
Definition of “downstream” and “upstream”

  • Staging
  • Mainline
  • Upstream
  • Downstream
    • Raspberry PI Upstreaming
      staging: Import the BCM2835 MMAL-based V4L2 camera driver.
      Help learning MMAL/contributing to userland utils
      What is MMAL?

      Programs

      github.com/raspberrypi/userland/tree/master/host_applications/linux/apps/raspicam

      USB-Webcam

      Linux media interface
      Linux video capture interface
      
      $ sudo apt-get install fswebcam
      [...]
      The following NEW packages will be installed:
        fontconfig-config fonts-dejavu-core fswebcam libfontconfig1 libgd3 libjbig0 libtiff5 libwebp6 libxpm4
      [...]
      
      $ fswebcam [<options>] <filename>
      $ fswebcam
      -r 640x480       # Auflösung festlegen
      -d /dev/video0   # Welches Device wird benutzt
      -v               # Verbose -> Ausführliche Ausgabe
      /tmp/test.jpg    # Ausgabe-Datei 
      
      
      $ sudo apt-get install motion
      [...]
      The following NEW packages will be installed:
        ffmpeg libaacs0 libass5 libasyncns0 libavc1394-0 libavcodec57 libavdevice57 libavfilter6 libavformat57 libavresample3
        libavutil55 libbdplus0 libbluray1 libbs2b0 libcaca0 libcairo2 libcdio-cdda1 libcdio-paranoia1 libcdio13
        libchromaprint1 libdc1394-22 libdrm-amdgpu1 libdrm-freedreno1 libdrm-nouveau2 libdrm-radeon1 libebur128-1 libegl1-mesa
        libfftw3-double3 libflac8 libflite1 libfribidi0 libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgme0
        libgraphite2-3 libgsm1 libharfbuzz0b libice6 libiec61883-0 libjack-jackd2-0 libllvm3.9 libmariadbclient18 libmp3lame0
        libmpg123-0 libogg0 libopenal-data libopenal1 libopencv-core2.4v5 libopencv-imgproc2.4v5 libopenjp2-7 libopenmpt0
        libopus0 libpgm-5.2-0 libpixman-1-0 libpostproc54 libpq5 libpulse0 libraw1394-11 librubberband2 libsdl2-2.0-0 libsensors4
        libshine3 libsm6 libsnappy1v5 libsndfile1 libsndio6.1 libsodium18 libsoxr0 libspeex1 libssh-gcrypt-4
        libswresample2 libswscale4 libtheora0 libtwolame0 libtxc-dxtn-s2tc libva-drm1 libva-x11-1 libva1 libvdpau-va-gl1 libvdpau1
        libvorbis0a libvorbisenc2 libvorbisfile3 libvpx4 libwavpack1 libwayland-client0 libwayland-cursor0
        libwayland-egl1-mesa libwayland-server0 libwebpmux2 libx11-xcb1 libx264-148 libx265-95 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
        libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcursor1
        libxdamage1 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxtst6 libxv1 libxvidcore4
        libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers motion mysql-common va-driver-all vdpau-driver-all
        x11-common
      [...]
      Setting up motion (4.0-1) ...
      Adding group `motion' (GID 113) ...
      Done.
      Warning: The home dir /var/lib/motion you specified already exists.
      Adding system user `motion' (UID 109) ...
      Adding new user `motion' (UID 109) with group `motion' ...
      The home directory `/var/lib/motion' already exists.  Not copying from `/etc/skel'.
      adduser: Warning: The home directory `/var/lib/motion' does not belong to the user you are currently creating.
      Adding user `motion' to group `video' ...
      Adding user motion to group video
      Done.
      
      $ sudo vi /etc/default/motion
      start_motion_daemon=no => yes
      
      $ sudo mkdir /srv/motion
      $ sudo chown motion:motion /srv/motion
      

Leave a Reply

Your email address will not be published. Required fields are marked *