Python未経験向け:streamlitで「写真を撮るWebアプリ」を10分で作る入門

Python未経験向け:streamlitで「写真を撮るWebアプリ」を10分で作る入門

これから画像処理AIエンジニアを目指そうとしている方に向けて、メチャクチャ簡単にpythonで写真を取る方法を紹介します。

streamlitの使い方を学ぶメリットについては以前の記事でもご紹介しましたが、streamlitの素晴らしいところはソースコードが少なくてすみ、見た目がカッコいいことが挙げられます。

そして、すぐにwebアプリ化できるところが魅力です。

ブラウザからWebカメラを起動できる。

こんにちは。AI coordinatorの清水です。
本日もメチャクチャ寒いですね。とういことでAIエンジニアを目指す方向けに小技を紹介していきます。

さて、そんなstreamlitですが、なんとブラウザからWebカメラを起動することが出来ます。
そして、これがメチャクチャ簡単なんです。
画像処理AIエンジニアは頻繁に写真を取得したり、AIに推論させるために画像を扱うことが非常に多いので、簡単に写真を取得できる機能は本当にありがたいです。

イメージして頂くために、写真を入力にAIを動かすサンプルを紹介しますので、興味がある方は以下の画像をクリックしてください。実際にstreamlitでwebアプリ化したものを体験できます。(アクセス集中により起動に時間がかかることがあります。)

物体検出アナライザー

たった2行のpythonソースコードで作ることが出来る!

話を戻して、どれぐらい簡単に出来るかというと、たった2行で写真が取れます。

import streamlit as st
picture = st.camera_input(“Take a picture”)

上記プログラムのファイル名を camera.py とします。
1行目でstreamlitをインポートし、2行目で撮影出来ます。

では実際にやってみましょう。まずはターミナルを起動して以下のコマンドでstreamlitライブラリーをインストールします。

pip install streamlit

数秒でインストールが終わったら、下記コマンドで camera.py を起動しましょう。

streamlit run camera.py

自動でブラウザが起動します。ブラウザにカメラの使用許可を聞かれたら「許可する」を押します。
するとどうでしょうか?ブラウザにパソコンのカメラの映像が写っていませんか?
(もしブラウザが自動起動しなければ、URLに “http://localhost:8501” を打ち込んでください。)

たった2行のpythonソースコードでカメラを起動することが出来ました。
さらに、カメラ映像の「Take Photo」を押下してみましょう。
映像が止まって、写真を撮影出来たのではないでしょうか?

「Clear photo」を押すと、また撮影モードに戻ります。

これだけで出来ちゃうんです。凄い。しかもこれはブラウザ上で動いているため、立派なWebアプリケーションです。

こんな感じで簡単に撮影できちゃうのがstreamlitなのです。

Python未経験向け:streamlitで「写真を撮るWebアプリ」 画像2

画像処理ではOpenCVが王道だけど・・・

pythonで画像処理をやろうと思ったら「opencv」というライブラリーが王道です。これを使わずして画像処理をやることはまずないでしょう。ただ写真を撮るソースコードを「opencv」で実装すると、そこそこ行数がかさみ、まあまあ大変です。
そういう意味でも、この行数の少なさで写真撮影が出来るのはstreamlitの大きな魅力です。

ちなみに撮影したデータは2行目のpictureに保管されています。撮影した写真を煮るやり焼くなり、YOLOv8に突っ込むなり、あとは好きに使うだけです。

如何でしたか?

さあ、AIエンジニアを目指そう!

こんな感じでブラウザ上でバリバリ動くwebアプリケーションを作りながらpythonを学ぶと、アッという間にAIエンジニアになれます。

是非色々試してながら動かしてみてください。

この記事の内容について、相談したい方へ

技術選定・実装の進め方・組織での導入など、AI/IoT全般のご相談を受け付けています。

無料相談会(30分・オンライン)

About The Author

Hideki
東京大学発AIスタートアップでロボット開発室室長・画像解析室室長・動画解析室室長を務め、画像認識関連のAI特許を在籍中に3件取得。その後、KDDIグループでプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRIST株式会社の執行役員CTO 兼 VPoEとして、農業の人手不足解決に向けた収穫ロボットの開発組織を統括しています。AI・ハード・エレキ・通信・クラウド・IoTまでを一気通貫で設計できる視点を強みに、性能だけでなく「感動やワクワク体験」までデザインできるロボットの研究を進めています。並行して、AI coordinatorとして企業のAI導入・教育機関のAI授業・地域の技術相談を月額契約で継続伴走しています。

LEAVE A REPLY

*
*
* (公開されません)