Skip to content

Instantly share code, notes, and snippets.

@satakagi
Last active February 23, 2022 16:55
Show Gist options
  • Save satakagi/1b5adc8dff8236421a593b93fa152222 to your computer and use it in GitHub Desktop.
Save satakagi/1b5adc8dff8236421a593b93fa152222 to your computer and use it in GitHub Desktop.
CHIRIMEN Zero版でカメラを使う2

Raspberry PiのカメラをAPIで直接操作するpi-camera-connectを使った方法です。Pi-Cameraを使った方法(gistはこちら)より、大幅に高速に画像が取得できることを確認しています。

準備

  • Raspberry Piカメラモジュール
  • Zero用ケーブル~上のモジュールは添付されているようです。
  • 接続のしかた : Zeroは専用ケーブルでつなぎます

セットアップ

コマンドプロンプトで、以下設定

  • 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();

Note

  • dataURLで画像を文字列化すれば比較的簡単にサーバに送信したりできるでしょう。
  • 各種センサ (WebGPIO経由で人感センサーなど)を使い、自動的に撮影、サーバにアップロードする仕組みなどもできるでしょう。
  • pi-camera-connectのリポジトリ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment