OpenCVで遊んでみる。 PC内蔵webカメラから動画の撮影。
OpenCVで遊んでみる。 PC内蔵webカメラから動画の撮影。

OpenCVで遊んでみる。 PC内蔵webカメラから動画の撮影。

videocapture

OpenCVはカメラを使って動画を撮影する非常に単純なインターフェイスがあります。webカメラを使い動画をグレースケールの動画に変換し表示させてみます。

OpenCVのインストールは”Telloの画像をPCに写してみる”を参照願います。

動画を撮影するにはVideoCapture型のオブジェクトを生成しなければなりません。引数には撮影に使用するカメラのディバイス番号を指定します。PCパソコンに内蔵されているカメラなので”0”です。cap = cv2.VideoCapture(0)

ret, frame = cap.read()

最初のパラメータretの値はTrueまたはFalseであり、画像が読み取られたかどうかを示します。

2番目のパラメーターはframeです。これは、フレームの現在のスクリーンショットです。

ret、frame = cap.read()、cap.read()はフレームごとに読み取られ、次の2つの値を返します:ret、frame(retはブール値であり、読み取られたフレームが正しい場合はTrueを返します。ファイルは最後まで読み取られ、その戻り値はFalseです。次のフレームは、フレームイメージの3次元マトリックスBGR形式です。

取得した”VideoCapture object” の cap を使って、cap.readとすることで、カメラからの静止画像を読み込みます。静止画像は2番目の戻り値 frame へ代入されます。1番目の戻り値 ret には正しく静止画像が読み込みできたか否かのブール値(True/False)が入ります。
画像を表示させる手順は画像ファイル表示のときと同じで、cv2.imshowを使います。

cv2.imshow()関数はPythonで使用され、実行時に画像が点滅します。


face1

この応用をドローンTelloでやってみると…..

code1

TelloをSDKモードのするため、command & stream をTelloのアドレスに送信指令を出します。次に.

cv2.VideoCapture(“udp……(‘192.168.10.1’,

TelloからのVideoStream受信IP

‘11111’))Tello udp port番号

code2

cv2.imshow(‘Tello’, cv2.resize(frame, (360.240))

フレームサイズを小さく表示するようにしている。