OpenCV Webcam
この短いデモでは、Python と OpenCV を使用して、Web サイトにアクセスし、そのライブフィードを表示する方法を学習します。
Python と OpenCV の助けを借りて Webcam にアクセスする
ライブカメラフィードにアクセスする必要があるコンピュータービジョンプロジェクトに取り組んでいるときはいつでも、フェイスマスク検出を実行したい場合、またはソーシャル距離検出を実行したいプロジェクトを設計します。
その場合、カメラのライブフィードにアクセスする必要があり、カメラから受信するライブフィードにアクセスすると、次の命令がさまざまな目的に使用される可能性があります。
OpenCV でリアルタイムカメラフィードにアクセスするためのコードを見てみましょう。opencv
ライブラリをインポートしたら、opencv
ライブラリの VideoCapture()
メソッドを使用する必要があります。
さまざまなソースからビデオをキャプチャします。ローカルコンピュータシステムからのビデオまたはラップトップのカメラからのビデオをキャプチャすることができます。あるいは、IP ベースのカメラからビデオをキャプチャすることもできます。
括弧内にビデオキャプチャのソースを提供する必要があります。
WC = cv2.VideoCapture(0)
これで、ソース 0
が提供されたことがわかります。これは、ラップトップのデフォルトのカメラにアクセスすることを意味します。コンピューターシステムに保存されているビデオにアクセスする場合は、ビデオのフルパスを文字列として渡すことができます。
IP ベースのカメラにアクセスする場合は、IP ベースのカメラのフルパスを指定する必要があります。ダミーアドレスを考えてみると、こんな感じになります。
WC = cv2.VideoCapture("https://3.4.5.6/cam2")
ただし、この記事では、ラップトップのデフォルトのカメラにアクセスしようとします。これには、ソースを 0
として配置する必要があります。カメラからのライブフィードをキャプチャします。
ビデオをキャプチャしたら、それをオブジェクトに保存します。その後、ビデオまたはカメラから受信したライブフィードから各フレームを読み取ろうとします。
ビデオは一連の画像に他なりません。コンピュータビジョンの分野では、そのフレームをフレームと呼びます。
次に、while
ループに一連のコードを記述します。カメラのライブフィードを無限に読み続けます。read()
メソッドを使用して WC
オブジェクトからフレームを読み取ります。このフレームは単なる画像です。
while True:
# this will read images/frames one by one
RET, F = WC.read()
cv2.imshow("Live Feeds", F)
次の命令は、2つの引数を持つ imshow()
メソッドを使用してこれらの画像を表示します。1つは右上隅に表示されるウィンドウ名で、もう 1つは画像のコンテンツである numpy
配列です。
次の手順では、ライブカメラからフィードを受け取り、プログラムにフレームまたは画像を表示し続けます。この無限ループまたはカメラのライブフィードを停止するには、このループを解除する必要があります。
v2.waitKey(1)
を使用する必要があります。これにより、キーボードで押すキーが while
ループの終了であると述べた場合、アクションまでウィンドウが開いたままになります。
定義されたキーを押すと、カメラからアクセスしているライブフィードが自動的に停止します。
コードの最後に、WC
オブジェクトをリリースします。destroyAllWindows()
メソッドを呼び出します。これにより、ライブフィードを表示するために開いたすべてのウィンドウが破棄されます。
import numpy as np
import cv2
# Capture video from storage/laptop camera/IP based camera
WC = cv2.VideoCapture(0)
while True:
# this will read images/frames one by one
RET, F = WC.read()
cv2.imshow("Live Feeds", F)
KEY = cv2.waitKey(1) # wait for key press
if KEY == ord("q"):
break
WC.release()
cv2.destroyAllWindows()
これで、カメラがリアルタイムビデオをキャプチャしていることがわかります。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn