【Python】ノートパソコンに付属しているカメラにアクセスして画面に表示してみる

プロモーションが含まれています。

スポンサーリンク
サムネイル プログラム

表題の通りで、整理しながら進めていきたいと思います。

スポンサーリンク

AIカメラとは

この記事を書くにあたり色々と調べていたときに目にした、AIカメラについて簡単に調べてみました。機械学習やAI開発に相性が言われているpythonなので、どんなものか知っているのは良いことかと思います。

amazonで検索

Raspberry Piから出ているカメラが出てきます。他は監視カメラやWebカメラばかりで、プログラムを書いて制御するのは難しいそうでした。

Google検索で一番目に出てきた記事を下に載せておきます。IMX500 / SONY をRaspberry Pi で使えるようにしたキットだと分かります。IMX500(カメラ)が、物体を認識するシステムを兼ね備えているデバイスで、映像だけでなくデータとして送っていると書かれています。デジタルカメラの顔認識機能の応用製品ではないかと推測します。

AIカメラを使っている記事/raspi.jp

今回はPC付属のカメラなので、種類で言うとWebカメラになりそうです。

スポンサーリンク

今回やることの整理

今回やってみたいことを、整理・細分化してひとつずつクリアしていきたいと思います。

  • プログラムによってPCのカメラにアクセス
  • プログラムでカメラから何かの情報を受信
  • (PCにウィンドウ画面を表示させる)
  • ウィンドウ画面に映像を表示させる

こんな感じになりそうです。

プログラムによってPCのカメラにアクセス

必要なライブラリ

OpenCVというライブラリを使用するようです。英語の公式サイトがあります。正直どこに何があるのかよくわかりませんでした。ライブラリ(モジュール)の詳細は、GitHubで公開しているようです。(サイトにあるリンクからアクセスできます。)

【公式サイト】OpenCV

Wikipediaの説明が分かりやすく、外部リンクで紹介されている (opencv.jp) が、利用者の有志が集まって日本語に翻訳された非公式サイトです。内容は初級者にとっては難しく、更新は止まっていてhttps通信化もされていません。(リンク切れになる可能性もあります。)

【Wikipedia】OpenCV

ライブラリのインストール

ライブラリのインストールが必要です。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は外部ライブラリで、配列処理やベクトル配列などの計算を効率的に処理するもので、動作の高速化に役に立ちます。

【公式サイト】numpy


cv.imshow(‘frame-test’, gray)cv.imshow(‘frame-test’, frame) にします。

gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) は不要になります。

ドキュメントを読んでいると、 OpenCV で顔認識や図形認識などのプログラムがつくれるようです。

コメント

タイトルとURLをコピーしました