循环使用 Raspistill Image NoFileSave (nodejs)

Take Raspistill Image NoFileSave in a loop (nodejs)

我正在制作一个有趣的开源示例,用于使用 Raspberry Pi 作为我的硬件进行边缘计算计算机视觉。

我必须访问硬件的当前 SDK 是基于 nodejs 的(我将在 python 可用时发布第二个)。警告:本人是node小白

我面临的问题是我想在不保存文件的情况下循环使用库存相机拍照。我只想访问缓冲区,提取像素,传递给我的第二个边缘模块。

在 while(true) 循环中拍摄没有文件保存的照片似乎永远不会执行。

这是我的示例:

'use strict';

var sleep = require('sleep');
const Raspistill = require('node-raspistill').Raspistill;
var pixel_getter = require('pixel-getter');


while(true) {

const camera = new Raspistill({ verticalFlip: true,
                            horizontalFlip: true,
                            width: 500,
                            height: 500,
                            encoding: 'jpg',
                            noFileSave: true,
                            time: 1 });

camera.takePhoto().then((photo) => {
    console.log('got photo');
    pixel_getter.get(photo,
               function(err, pixels) {
                    console.log('got pixels');
                    console.log(String(pixels));
                    });
    });
sleep.sleep(5);
}
console.log('picture taken');

在上面的代码中,console.log 函数中的 none 实际上曾经记录过;让我相信从来没有拍过照片,因此无法提取像素。

如有任何帮助,我们将不胜感激。


更新: 看起来循环机制可能很有趣。我想我真的不在乎它是否循环拍照,只要它拍照,我传递它,我拍照然后传递它,不确定。

我决定用递归循环来解决这个问题,效果非常好。

'use strict';

const sleep = require('sleep');
const Raspistill = require('node-raspistill').Raspistill;
const pixel_getter = require('pixel-getter')

const camera = new Raspistill({ verticalFlip: true,
                            horizontalFlip: true,
                            width: 500,
                            height: 500,
                            encoding: 'jpg',
                            noFileSave: true,
                            time: 5 });

function TakePictureLoop() {
    console.log('taking picture');
    camera.takePhoto().then((photo) => {
        console.log('got photo');
        pixel_getter.get(photo, function(err, pixels) {
            console.log('got pixels');
            TakePictureLoop();
        });
    });
}

TakePictureLoop();