我正在制作一个有趣的开源示例,用于使用Raspberry Pi作为我的硬件进行边缘计算计算机视觉。
我必须访问硬件的当前SDK是基于nodejs的(我将在python可用时发布第二个)。警告:我是一个节点新手。
我面临的问题是,我想在不保存文件的情况下使用股票相机在一个循环中拍摄照片。我只想访问缓冲区,提取像素,传递到我的第二个边缘模块。
在一段时间内没有保存文件的照片(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函数是真正的日志;这让我相信照片从来没有被拍摄过,因此无法提取像素。
如能提供任何协助,将不胜感激。
更新:看起来这个循环机械师可能很有趣。我想我并不在乎它是否在循环中拍摄照片,只要它拍了一张照片,我就把它复制下来,我拍了一张照片,我不确定地把它模仿掉了。
发布于 2018-01-10 21:04:58
我决定用一个递归循环来处理这个问题,这个循环非常出色。
'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();https://stackoverflow.com/questions/48195713
复制相似问题