Captura imagem bruta do dispositivo V4L (webcam)

2

Estou usando um Raspberry pi para monitorar uma geladeira self-service. Quando a porta se abre, um script de shell está sendo executado para capturar fotos até que a porta se feche novamente. O problema, no entanto, é a velocidade do processador ARM. Capturar em resolução total usando fswebcam leva de 2 a 4 segundos, o que é muito longo.

Nossa ideia para resolver isso é dividir o processo:

  1. Capture imagens não processadas e salve no cartão de memória
  2. Após a porta ser fechada, processe os dados brutos. Isso não é crítico no tempo.

Agora, minhas perguntas são:

  1. Isso é possível / sábio?
  2. Qual programa devo usar?
por Finwood 30.10.2013 / 16:36

1 resposta

1

Isso é o que temos até agora:

#!/bin/bash

tempdir=/tmp/fswebcam
host="167.174.70.42"
destdir=~/fsweb
tformat=%Y-%m-%d_%H-%M-%S

if [ ! -d "$tempdir" ]; then
    mkdir $tempdir
fi

cd $tempdir

dooropentime=$(date +$tformat)

for i in {1..3}
do
    starttime=$(date +%s%N)
    echo -e "\n==== starting capture at" $(date +%H:%M:%S.%N) "====  (# $i)"
    fswebcam --device /dev/video0 --input 0 --resolution 1280x720 --timestamp "$tformat" $tformat.jpg
#   fswebcam --device RAW:/dev/video0 --palette NV12MB --resolution 1280x720 $tformat.jpg
    endtime=$(date +%s%N)
    echo -e "==== capture finished at" $(date +%H:%M:%S.%N) "==== (in "$((($endtime - $starttime) / 1000000))"ms)\n"
done

echo "packing..."
tar -cjf $dooropentime.tar.bz2 *.jpg

echo "copying..."
scp *.tar.bz2 pi@$host:$destdir
#cp *.tar.bz2 $destdir
rm -r $tempdir/*
echo "done!"

Ainda é bem cru, mas pelo menos está funcionando. Capturar um quadro leva aproximadamente 3300ms no pi.

--device RAW:/dev/video0 produz um erro de incompatibilidade de paleta, e a paleta NV12MB ( link "fswebcam-20060604: Adicionado o tipo de paleta NV12MB (somente para fonte bruta) ") parece estar faltando.

Alguma idéia?

    
por 31.10.2013 / 11:04