Возьмите 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();