Raspberry Camera API: Difference between revisions

From Rsewiki
Line 3: Line 3:
== Camera use ==
== Camera use ==


Raspberry pi operating system version "bullseye" uses a new camera library
Raspberry pi operating system version "bullseye" uses a new camera library.
The info is taken from https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-and-libcamera-apps?ref=https://githubhelp.com


=== LibCamera ===
=== LibCamera ===

Revision as of 17:26, 14 December 2021

Back to Robobot

Camera use

Raspberry pi operating system version "bullseye" uses a new camera library. The info is taken from https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-and-libcamera-apps?ref=https://githubhelp.com

LibCamera

If not already installed, install with

sudo apt install libcamera-apps

It should not be needed to install libcamera-dev

Camera streaming

The libcamera library can do streaming out of the box with the command:

libcamera-vid -n -t 0 --inline --listen --rotation 0 --framerate 30 --width 1920 --height 1080 -o tcp://0.0.0.0:8888

It will listen to port 8888 for TCP connections on the localhost.

From another PC the stream can be displayed by VLC, (or the same parameter in the VLC "media" -> "open network stream")

vlc tcp/h264://192.168.2.14:8888

if 192.168.2.14 is the IP of the Raspberry pi. The streaming will terminate when the VLC stops the connection.

A start-script is placed in the "local" home folder.

./stream_cam.sh

with examples of different solutions.

camera from OpenCV

@todo

Raspicam - old version of operating system

NB! old info - rest of page

To be used from C++ direct or through openCV.

A rather short raspberry pi camera API is available from https://www.uco.es/investiga/grupos/ava/node/40.

And can be downloaded from https://sourceforge.net/projects/raspicam/files/,

or get the file from sourceforge with no GUI, with (there may be newer versions):

cd ~/Downloads
wget --no-check-certificate -O raspicam-0.1.9.zip https://downloads.sourceforge.net/project/raspicam/raspicam-0.1.9.zip?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fraspicam%2F%3Fsource%3Dtyp_redirect&ts=1486483484&use_mirror=netix

Once fetched and available on the raspberry, then Unpack and install:

unzip raspicam-0.1.9.zip
cd raspicam-0.1.9
mkdir build
cd build
cmake ..
make -j3
sudo make install
sudo ldconfig

The library is installed in /usr/local, and therefore to make cmake find it the path needs to be added to startup configuration, in file ~/.bashrc

cd
nano ~/.bashrc
add at the end:
export CMAKE_PREFIX_PATH=/usr/local/lib
source ~/.bashrc   # to implement export

Test with openCV

raspicam_cv_test

That takes 100 images and saves 3.

Camera streamer

To download the project you will need a source control system called git. It may not be installed on a fresh image. I know it’s not on the lite image. So you may need to install it.

sudo apt-get install git

Now that you have git installed, use it to clone a copy of the mjpg-streamer to your Pi.

git clone https://github.com/jacksonliam/mjpg-streamer.git

After the cloned copy of the mjpeg-stream has been coppied to the raspberry-pi, follow these steps.

cd mjpg-streamer/mjpg-streamer-experimental/
make -j4     # optional CMAKE_BUILD_TYPE=Debug
sudo make install

Make a script to start the streamer

cd
nano start-stream.sh

copy this into the file (uncomment only one line - the others are examples for other resolutions - edit as desired)

#!/bin/bash
#mjpg_streamer -i "input_raspicam.so -y 1600 -x 1200 -fps 5 -rot 90" -o output_http.so
mjpg_streamer -i "input_raspicam.so -y 972 -x 1296 -fps 3 -rot=0" -o output_http.so
#mjpg_streamer -i "input_raspicam.so -y 600 -x 800 -fps 3 -rot=0" -o output_http.so
#mjpg_streamer -i "input_raspicam.so -y 640 -x 480 -fps 5" -o output_http.so

Change the file to be executable

chmod +x start-stream.sh

Start streaming at boot

Start of applications can be controlled by the /etc/rc.local script:

nano /etc/rc.local

add the following lines before 'exit 0' (close to the end)

# start camera streaming
su - local /home/local/start-stream.sh &

Copy and 'shift-ctrl-v' will do

Comment the last line (su - local /home/local/start-stream.sh &) if camera streaming should not start.

to stop streaming use (if started)

pkill mjpg_streamer


Watch camera stream

When the robot is on a net connection - cable or wifi - you can watch the stream from a browser

for streaming:

HTTP://jasmin.local:8080/?action=stream

or for a snapshot

HTTP://jasmin.local:8080/?action=snapshot

where jasmin should be replaced with the robot name, or jasmin.local can be replaced with the IP address.