Возьмите Raspistill Image NoFileSave в цикле (nodejs)

Я делаю забавный образец с открытым исходным кодом для создания Edge Compute Computer Vision с использованием Raspberry Pi в качестве моего оборудования.

Текущий SDK, к которому у меня есть доступ к оборудованию, основан на nodejs (я выпущу второй с python, когда он будет доступен). Предупреждение: я новичок узла.

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу делать снимки, используя стандартную камеру, без сохранения файла. Я просто хочу получить доступ к буферу, извлечь пиксели, перейти ко второму граничному модулю.

Фотосъемка без сохранения файла в цикле 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 фактически никогда не регистрируется; Это наводит меня на мысль, что фотографии никогда не делаются и поэтому пиксели не могут быть извлечены.

Будем очень благодарны любой помощи.


ОБНОВЛЕНИЕ: похоже, что механика зацикливания может быть забавной. Думаю, мне все равно, будут ли они снимать в цикле, пока они снимают, я вычеркиваю их, делаю снимки и выдает их бесконечно.

1 ответ

Решение

Я решил подойти к проблеме с рекурсивным циклом, который работал блестяще.

'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();
Другие вопросы по тегам