Raspberry PiのカメラをAPIで直接操作するpi-camera-connectを使った方法です。Pi-Cameraを使った方法(gistはこちら)より、大幅に高速に画像が取得できることを確認しています。
コマンドプロンプトで、以下設定
- sudo raspi-config
- Interface Option ⇒ P1 Camera ⇒ <はい> ⇒ <了解> ⇒ <Finish> (カーソルキーとEnterキーとTABキーで操作)
- 参考:この情報を参考に
- cd ~/myApp
- npm install pi-camera-connect
pi-camera-connectのリポジトリのreadmeと同じ内容ですが、オプションを加えてみました
import { StillCamera } from "pi-camera-connect";
import * as fs from "fs";
// Take still image and save to disk
async function runApp(){
const stillCamera = new StillCamera(
{
width:600,
height:600,
}
);
const image = await stillCamera.takeImage();
fs.writeFileSync("still-image.jpg", image);
};
runApp();
dataURLを取得
import { StillCamera } from "pi-camera-connect";
// Take still image and get dataURI
async function runApp(){
const stillCamera = new StillCamera(
{
width:200,
height:200,
}
);
var mime = 'image/jpeg';
var encoding = 'base64';
const image = await stillCamera.takeImage();
const b64str = image.toString(encoding);
const dataURL = 'data:' + mime + ';' + encoding + ',' + b64str;
console.log(dataURL);
};
runApp();
- dataURLで画像を文字列化すれば比較的簡単にサーバに送信したりできるでしょう。
- 各種センサ (WebGPIO経由で人感センサーなど)を使い、自動的に撮影、サーバにアップロードする仕組みなどもできるでしょう。
- pi-camera-connectのリポジトリ