Wi-Fiカメラで撮った静止画をGemini AIに解説させてみた

1. はじめに(何を実現したか)

 AIに身体を与える、というコンセプトの記事を見かけて、Wi-Fiカメラはうちにもあったのでやってみたい!と思った。しかし、Claude Codeってサブスクしないと使えない(だよね?)ので断念し、無料で似たようなことできないかなと思ってGeminiに聞いてみた。

「Wi-Fiカメラと、Gemini無料版を組み合わせて遊びたい。アイディアと実装方法をセットで提案して」

そして返ってきた解答がこれ。

Wi-Fiカメラの映像をGeminiに届けるための最短ルートは以下の通りです。

  1. Wi-Fiカメラ: RTSP(Real Time Streaming Protocol)でストリーム配信(ローカルNW内)。
  2. PC (Python): OpenCV を使ってRTSPから「今の一瞬」を画像として保存。
  3. Gemini API: 保存した画像を送信し、プロンプトで指示を出す。

 Wi-Fiカメラに映した静止画を、GoogleのAI(Gemini)に投げて、Wi-Fiカメラに映った静止画を実況してくれるシステムを構築した。Discordで「監視」とつぶやくことで実況をするような仕組みにした。最初は単純な機能から実装し、徐々に機能を追加していった。

2. 必要な準備

 私が準備したのは以下。わからなかったらGeminiに都度聞けばいい。Geminiの言っていることがわからないなら、「素人なので懇切丁寧に手順を教えて」などとGeminiに再度聞けばよい。

  • ハードウェア
    • 部屋に転がっていたTP-LinkのWi-Fiカメラ(RTSP通信ができるもの)
    • Tapoスマホアプリの「カメラ設定」>「高度な設定」>「カメラのアカウント」から、RTSP用のユーザー名とパスワードを設定してメモ。
    • カメラのIPアドレスを確認してメモ。
  • Python環境の構築
    • Python公式サイト から最新版をダウンロードしてインストール。
    • 重要: インストール画面の一番下にある 「Add Python to PATH」 に必ずチェックを入れる!
    • 使用ライブラリをインストール: discord.py, opencv-python, google-genai
    • VS Codeもインストール:テキストエディタでPythonコードを書くときは、文字コードに注意。Shift-JISではなくUTF-8で保存。テキストエディタで書くときは見落としがち。
  • Google AI API: Google AI Studio でAPIキーを取得。無料枠あり。
    • AI(Gemini)を使うための「通行証」を取得します。
    • Google AI Studio にアクセスし、Googleアカウントでログイン。
    • Create API key」 ボタンをクリック。
    • 画面中央の 「Create API key in new project」(新しいプロジェクトでAPIキーを作成)という青いボタンをクリック。
    • 表示された長い英数字の文字列をコピーして、メモ帳に「APIキー」として保存。
    • 注意: このキーは銀行の暗証番号と同じです。人には教えないこと!
  • Discord Bot設定:Discord Developer Portal でApplicationを作成。
    • 重要: 「Bot」設定画面で Message Content Intent をONにすることを忘れずに!
    • 手順1:Discord Botの準備(重要)
  1. Discord Developer Portal にアクセスし、「New Application」を作成します。
  2. 左メニューの「Bot」を開き、**「Reset Token」**を押して表示される長い文字列(トークン)をコピー。
  3. 同じ「Bot」ページの下の方にある 「Message Content Intent」 を ON に(これがないと「監視」という文字が読めない)。
  4. 左メニューの「OAuth2」→「URL Generator」で、bot にチェックを入れ、下の権限で Send Messages Attach Files Read Message History にチェックを入れる。
  5. 出てきたURLをブラウザで開き、自分のDiscordサーバーにBotを招待。

(最終的には不要になったが段階的に進めるために一時的に必要だった):DiscordのWebhook URLを取得する

  1. Discordを開き、自分専用のサーバー(または既存のサーバー)のチャンネル設定(歯車アイコン)をクリック。
  2. 「連携サービス」 → 「ウェブフック」 を選択。
  3. 新しいウェブフック」 を作成し、名前(「Tapo監視くん」など)を決めて 「ウェブフックURLをコピー」 をクリック。

3. システムの仕組みと開発の裏側

 Geminiと会話しながら、最初はカメラやGeminiとの接続を試すところから始めた。徐々にやりたいことを追加してGeminiにコードを都度出してもらう。これの繰り返しをした。単に「画像を送るだけ」の機能から「画像読み取りを始める会話をトリガーにする」へと段階的に進化させていった。

(1) カメラ映像をPythonで切り出す

 まずは、カメラから1枚キャプチャしてGeminiに「何が写っているか」を解説させるサンプルをGeminiが提示していたので実行した。TapoカメラのRTSPストリームをOpenCVでキャプチャし、AIに渡すための静止画として保存する。

(2) WebhookからBotへの転換

 最初は静止画とGeminiによる実況結果を一方的にDiscordに送るだけのことを考え「Webhook」を採用した。が、「こちらがDiscordに呼びかけたときに反応してほしい」と考え、Discord Bot形式を採用。これにより、Discordへのメッセージ送信をトリガーにAIを起動できるようになった。

(3)AIへの「魂」の吹き込み

 Geminiからの返答に対し、「Few-shotプロンプト」という技法を使った。単に「〇〇風に」と指示するだけでなく、実際のセリフ例をいくつかGeminiに提示することで、独特な空気感を再現させることができた。

(4)「フリーズ問題」との戦い

 DiscordBotがGeminiの解析結果を待っている間、Discordとの接続が切れてしまうエラーが発生。これを解決するために「非同期処理(asyncio)」を導入し、Geminiが考えている間もDiscordBotの通信を維持する安定したシステムに仕上げた。

4. 実際に動かしてみて

 Discordで作った専用チャンネルで「監視」と入力する。一呼吸おいて、画像と共に実況テキストメッセージが届いたときは、すごい!となった。

5. まとめ

 Pythonと最新のAPI等を組み合わせれば、デバイスに面白いことをさせることができる。今後は「動体検知したら報告してくる」機能なども追加していきたい。

二眼レフカメラ OLYMPUS FLEX

 ご近所で荷物整理遺品整理をしており、そこの「引き取り手がなければ捨てるもの」の中に二眼レフカメラがあり、インテリアとして飾るのもいいなと思いいただいてきた。

 調べてみると、オリンパスFLEX A3.5というものらしい(オリンパス公式サイトの情報)。時期によってバリエーションがあるらしく、このサイトの一番下に載っているタイプと思われる。

 ダメ元で使い方を調べて、フィルムを装填して撮影し、現像(とデータ化)に出してみたら普通に映っていて感動した。

 早速ストラップを購入た。可能な限り使っていこうと思う。レンズキャップがどこかで入手できないかと思って探しているが見つからない。あと、革製のカメラカバーとストラップはだいぶ汚れて劣化しているがこれもなんとか再生できないかと思案中。

二眼レフカメラで撮った花
カメラ:OLYMPUS FLEX A3.5
フィルム:KENTMERE PAN 200

chanbara CLOCK

ロモグラフィーのLOMOMATIC 110を買いました(レンタルとか提供ではない)

 110フィルムカメラのLOMOMATIC 110を購入しました。なんでわざわざ「購入しました」と書くかというと、ブログやYouTubeで見た紹介コンテンツはほぼ全て「提供していただきました」「三ヶ月間お借りしました」というものばっかりだったから。

 特徴としては、電池(CR2)必須、バルブ撮影可能、多重露光可能、といったところ。

 実際に使ってみた感想。シャッターボタンを押す時、意識的に押し込まないとシャッターが切れない。で、押し込むとカメラがどうしてもブレてしまう。三脚を取り付けられる構造にもなっていないし遠隔でシャッターが切れるわけでもない。

 ところで、私の手元には昔どこかでもらった(展示会か、雑誌の付録か?)110フィルム用のカメラ(コンパクトカメラと呼ばれていた)がある。「MIRAX carefree 50」と書いてある。こっちは電池不要なので110フィルムを入れればそのまま使える。こっちの方が手ブレはしないと思う。

参考リンク:https://dc.watch.impress.co.jp/docs/column/akagi/1589056.html

MIRAX carefree50とLOMOMATIC110

Xacti DMX-CA9用バッテリは純正品でも脹らんできた

 このブログには書いてなかった(さっき見直して気づいた)けど、2009年7月にXacti DMX-CA9を購入した。バッテリーは一時間くらいしか保たないので予備のバッテリーとして純正品のバッテリーを二個買った。

SANYO ハイビジョン 防水デジタルムービーカメラ Xacti (ザクティ) DMX-CA9 ブラック DMX-CA9(K) SANYO ハイビジョン 防水デジタルムービーカメラ Xacti (ザクティ) DMX-CA9 ブラック DMX-CA9(K)

三洋電機 2009-03-13
売り上げランキング : 39057

Amazonで詳しく見る by G-Tools

SANYO DB-L20 DMX-C1専用 リチウムイオン電池 SANYO DB-L20 DMX-C1専用 リチウムイオン電池

三洋電機
売り上げランキング : 22911

Amazonで詳しく見る by G-Tools

 バッテリーはサードパーティー製のものも出ているが、そういったものは使っているうちに脹らんでカメラ本体から取り出しづらくなることもあるという話を聞いていたので、純正品を買った。
 しばらく使っていたのだが、先日、バッテリーがカメラから取り出せないことに気づいた。最初はカメラ本体の側の問題かと思っていたが、他バッテリーだと今まで通り取り出せるので、これはバッテリーが脹らんでいるんだ、と気づいた。

 慌ててamazonで純正品を買い足した。しかしCA9に使える純正バッテリーはいつまで入手可能なんだろう。

SANYO Xacti  VPC-CA9GX(G) 防水HDムービーカメラ 【海外仕様】 SANYO Xacti VPC-CA9GX(G) 防水HDムービーカメラ 【海外仕様】

SANYO
売り上げランキング : 90549

Amazonで詳しく見る by G-Tools

デジタル一眼レフカメラ買った

 もう二ヶ月以上経ってしまったけど、デジタル一眼レフカメラ買った。あーあー買っちゃった、といった感じだけど。というか他人のブログに影響されてるなあ。そりゃあブログを通じて宣伝しようとかそういう業者から上手くモノをもらってしまおうなんて考えるヤツも出てくるわな。

 一眼レフは初めてなので、「初心者向け」「軽いこと(重いと持ち運びが大変で体力のない最近めっきり疲れやすくなった自分には辛いし、腱鞘炎にもなってしまうので)」「メーカーは特にこだわらないけど長く使えそうなやつを」なんて判断基準で探した。
http://d.hatena.ne.jp/kowagari/20090521/1242913261
まーキヤノンかニコンですか
http://www.toro.jp/blog/2009/07/27/uncategorized/697.html
最近の初心者向け機種からだと、Canon EOS Kiss X3 か Nikon D5000 あたりに絞られますか
http://mitaimon.cocolog-nifty.com/blog/2009/06/post-44a7.html

 結構悩んだんだけど、結果的にはここのおすすめをそのまま買った。ただ、私はズームレンズも欲しかったので、EOS Kiss X3のダブルズームキットを買った。ズームレンズ単体で買うよりそっちのほうが安いんだもの。

Canon デジタル一眼レフカメラ Kiss X3 ダブルズームキット KISSX3-WKIT
Canon デジタル一眼レフカメラ Kiss X3 ダブルズームキット KISSX3-WKIT
キヤノン 2009-04-24
売り上げランキング : 155

おすすめ平均 star
star悩んだけれどKISS X3にして良かった^^
star簡単操作で綺麗
starとても綺麗です

Amazonで詳しく見る by G-Tools

Canon EFレンズ 35mm F2
Canon EFレンズ 35mm F2
キヤノン
売り上げランキング : 2992

おすすめ平均 star
star良い!
star多い日でも安心♪夜用。
star子供の目にも

Amazonで詳しく見る by G-Tools

まあ、買っちゃったので、値段の元を取るまで使い潰したいと思います。

http://webdog.be/archives/cat_64.php
 あと、この辺を参考に周辺小物をいくつか購入。

HAKUBA ピクスギア グリップストラップ KGP-04
HAKUBA ピクスギア グリップストラップ KGP-04
ハクバ
売り上げランキング : 1077

おすすめ平均 star
starムービー一眼には是非
starこれはいい!
star手軽だけどしっかりグリップ

Amazonで詳しく見る by G-Tools

これを付けると、バッテリーの蓋をふさぐことになります。

HAKUBA ドライボックスNEO 15L スモーク KMC-41
HAKUBA ドライボックスNEO 15L スモーク KMC-41
ハクバ
売り上げランキング : 15266

おすすめ平均 star
star手軽に防湿・防塵!

Amazonで詳しく見る by G-Tools

レンズがカビるという現象はいまいちピンと来ないのですが、まあカビるらしいので。

 NikonのD5000でもよかったんだけど、この不具合情報を見て躊躇してしまった。
http://www.nikon-image.com/jpn/support/whatsnew/2009/wnew090716.htm

Nikon デジタル一眼レフカメラ D5000 ダブルズームキット D5000WZ
Nikon デジタル一眼レフカメラ D5000 ダブルズームキット D5000WZ
ニコン 2009-05-01
売り上げランキング : 641

おすすめ平均 star
starズームキット購入しました
star間違いない選択でした。
starさすがNikon

Amazonで詳しく見る by G-Tools

デジタルビデオカメラ購入した

 動画記録はデジカメで撮っていたが、動画記録に対する欲求が更に高まってきたところで、多少のあぶく銭を得たのでこれ幸いと勢いで購入した。まあいろいろとよろしくない行動ですが(素直に貯金とかしろよ)。
 まあ、旅行に行ったときや日頃の生活で何か撮りたいものがあったときの記録用ということで。今回の選定のポイントは

  • 画質はそんなにこだわらない。そこそこの画質があればよい。ハイビジョンとかべつにいらない。
  • 長時間記録できること。60分とかそんなレベルの記録時間では困る。ちょっと調べたみたところHDD搭載モデルか。更にSDカードでも動画記録ができれば尚よし。
  • 静止画の記録は別にどうでもいい。デジカメ使うし。
  • バッテリーが長持ちすること。(無理ならば予備のバッテリーで対応)
  • カメラが軽くて小さいこと。携行性重視。
  • PCにデータを落とせること。編集もできること。データをPCに移動させてHDDあるいはDVD-Rに焼いて保存という使い方を想定。
  • 価格は安い方がいい。

 というわけで、ビクターのGZ-MG275を購入した。また、予備バッテリーとしてロワ製のものを注文した。
 まだ開封して充電している状態なので、カメラや付属ソフトの使用感はまた後で。

Victor Everio (エブリオ) ビデオカメラ ハードディスクムービー 40GB GZ-MG275-S Victor Everio (エブリオ) ビデオカメラ ハードディスクムービー 40GB GZ-MG275-S

ビクター 2007-02-10
売り上げランキング : 278339

Amazonで詳しく見る by G-Tools

デジカメ買い換えた

 ちょっと前から(先月くらいかな?)デジカメの調子が悪かった(液晶ディスプレイに画像が映らなくなる、でも写真は撮れていた)のだが、先日完全にダメになった。写真を撮っても真っ黒な映像しか記録されなくなった。
 使っていたデジカメは、キヤノンのIXY DIGITAL 30で、これは2003年の8月に4万円程度で購入したものである。液晶画面が小さくて、撮影後の確認に不都合がある(ぶれているかいないかがわかりにくい)以外については特に不満もなく使っていて、今後もずっと使い続けていくつもりだったので、今回の故障はショックだった。
 とにかく壊れてしまったので、買い換えることにした(修理は?)。機種選定のポイントとしては、

  • SDカードが使える
  • とにかく軽くて小さいモノ(携行性重視)
  • バッテリーはやっぱり長く保ったほうがいい
  • 予算は3万以上は出せない。画質はそんなにこだわらない

こんなところ。今まで使っていたIXYが320万画素で、それで充分だったので画素で悩むことはなかった。結局選んだのはパナソニックのルミックスFX30。浜崎くるみ、じゃなかった浜崎あゆみが宣伝しているやつ。以前使っていたデジカメの下取りで3000円割引してくれるというビックカメラのサービスもあったのでこれに決めた。ポイント値引きもあったので実際の購入価格は24000円くらい。
 バッテリーの持ち具合とか、部屋の中の撮影に難があるらしいという噂も聞くが、まあこれは今後使っていくうちにわかるだろう。
 ビックでは5年間の保険に入った。前のデジカメが4年保ったので、まあそのくらいはいいだろう。このカメラは4年以上保たせたい。

Panasonic デジタルカメラ LUMIX (ルミックス) DMC-FX30 センシュアルブラウン Panasonic デジタルカメラ LUMIX (ルミックス) DMC-FX30 センシュアルブラウン

松下電器産業
売り上げランキング : 224072

Amazonで詳しく見る by G-Tools