表題の通りで、整理しながら進めていきたいと思います。
AIカメラとは
この記事を書くにあたり色々と調べていたときに目にした、AIカメラについて簡単に調べてみました。機械学習やAI開発に相性が言われているpythonなので、どんなものか知っているのは良いことかと思います。
amazonで検索
Raspberry Piから出ているカメラが出てきます。他は監視カメラやWebカメラばかりで、プログラムを書いて制御するのは難しいそうでした。
Google検索で一番目に出てきた記事を下に載せておきます。IMX500 / SONY をRaspberry Pi で使えるようにしたキットだと分かります。IMX500(カメラ)が、物体を認識するシステムを兼ね備えているデバイスで、映像だけでなくデータとして送っていると書かれています。デジタルカメラの顔認識機能の応用製品ではないかと推測します。
今回はPC付属のカメラなので、種類で言うとWebカメラになりそうです。
今回やることの整理
今回やってみたいことを、整理・細分化してひとつずつクリアしていきたいと思います。
こんな感じになりそうです。
プログラムによってPCのカメラにアクセス
必要なライブラリ
OpenCVというライブラリを使用するようです。英語の公式サイトがあります。正直どこに何があるのかよくわかりませんでした。ライブラリ(モジュール)の詳細は、GitHubで公開しているようです。(サイトにあるリンクからアクセスできます。)
Wikipediaの説明が分かりやすく、外部リンクで紹介されている (opencv.jp) が、利用者の有志が集まって日本語に翻訳された非公式サイトです。内容は初級者にとっては難しく、更新は止まっていてhttps通信化もされていません。(リンク切れになる可能性もあります。)
ライブラリのインストール
ライブラリのインストールが必要です。WindowsやmacOSなどの標準的なデスクトップ環境用パッケージと、サーバー環境用パッケージ(省略)があります。詳しくは、GitHubで確認してください。
標準的なデスクトップ環境用パッケージ
上段が主要パッケージ、下段がフルパッケージのインストールです。
pip install opencv-python
pip install opencv-contrib-python
(windowsのコマンドプロンプトの場合は、
「py -m pip install opencv-python」)
動作確認
公式のドキュメントにコードがあったので、それで動作」確認していきます。
import numpy as np
import cv2 as cv
cap0 = cv.VideoCapture(0)
if not cap0.isOpened():
print("Cannot open camera")
exit()
while True:
ret, frame = cap0.read()
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
cv.imshow('frame-test', gray)
if cv.waitKey(1) == ord('q'):
break
cap0.release()
cv.destroyAllWindows()デバイスが認識できたら、カメラを使ってウィンドウに表示されるようになっています。動作中に「(キーボードの)q」を押すと、ウィンドウを閉じてプログラムが終了です。
numpy
import numpy as np は、なくても動作しました。numpyは外部ライブラリで、配列処理やベクトル配列などの計算を効率的に処理するもので、動作の高速化に役に立ちます。
cv.imshow(‘frame-test’, gray) を cv.imshow(‘frame-test’, frame) にします。
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) は不要になります。
ドキュメントを読んでいると、 OpenCV で顔認識や図形認識などのプログラムがつくれるようです。


コメント