ChromeOSのLinux環境からカメラ画像を使うライブラリ「Pychame」
ChromeOSのLinux環境はカメラデバイスに対応していないらしいので、OpenCVなどでカメラ画像を使ったプログラムが書けません。
しかし、うまい仕組みでカメラ画像をLinux環境のプログラムで使うためのpythonライブラリ発見しました。
https://github.com/LucasOliveiraaa/Pychame
以下、実際に動かしてみたわけではなく自分なりに調べて解釈した内容です。
PyChameを使ったカメラ画像を表示するサンプルプログラム
from pychame.video import Video
import cv2
video = Video()
while True:
frame, success = video.Read()
if not success:
continue
cv2.imshow("Camera Frame", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
video.Release()
cv2.destroyAllWindows()
たったこれだけです。
PyChameのvideoクラスのReadを呼び出して、カメラ画像を取得し、それをOpenCVで表示しているだけです。
PyChameの仕組み
videoクラスはカメラデバイスにアクセスしていない
videoクラスは、ローカルサーバーを立ち上げて、どこかからカメラ画像のデータをPOSTで送ってもらいます。
その送ってもらった画像データを整えて、video.Read()で返しているだけです。
ChromeOS側のブラウザからカメラ画像を送信
どこからカメラ画像を送るかというと、PyChameにあるindex.htmlをブラウザで開くことで、videoクラスで立ち上げたサーバーに、定期的にカメラ画像をPOSTしています。
データの流れ
実際の仕様手順
- ChromeOSのLinux環境で、PyChameを使ったプログラムを実行
- ChromeOS側のブラウザで以下URLを開く
https://0.0.0.0:5000
(PyChameの用意したindex.htmlが開きます) - 「Sending Camera Data」ボタンを押して、カメラを許可
- カメラ映像が、Linux環境のプログラムに送られます
このような仕組みで、ChromeOSのLinux環境ではカメラデバイスが使えないという問題を解決しています。
カメラデバイス以外に、Linux環境からではアクセスできない(しづらい)もののアクセスにもこの手法は使えそうですね。
もう一度言いますが、実際に動かしてみたわけではないので、使えないかもしれません・・・・