从 V4L(网络摄像头)设备捕获原始图像

从 V4L(网络摄像头)设备捕获原始图像

我正在使用 Raspberry pi 来监控自助冰箱。当门打开时,将执行 shell 脚本来捕获图片,直到门再次关闭。然而,问题在于 ARM 处理器的速度。使用 fswebcam 以全分辨率捕获需要 2-4 秒,这太长了。

我们解决这个问题的想法是拆分流程:

  1. 捕获原始图像并保存到存储卡
  2. 门关上后,处理原始数据。这对时间没有要求。

现在,我的问题是:

  1. 这可能/明智吗?
  2. 我应该使用哪个程序?

答案1

这就是我们到目前为止所得到的:

#!/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!"

它仍然很原始,但至少它可以工作。在 pi 上捕获一帧大约需要 3300 毫秒。

--device RAW:/dev/video0产生调色板不兼容错误,并且 NV12MB 调色板(http://www.firestorm.cx/fswebcam/“fswebcam-20060604:添加了 NV12MB 调色板类型(仅适用于原始源)”)似乎丢失了。

有任何想法吗?

相关内容