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で使用され、実行時に画像が点滅します。
この応用をドローンTelloでやってみると…..
TelloをSDKモードのするため、command & stream をTelloのアドレスに送信指令を出します。次に.
cv2.VideoCapture(“udp……(‘192.168.10.1’,
TelloからのVideoStream受信IP
‘11111’))Tello udp port番号
cv2.imshow(‘Tello’, cv2.resize(frame, (360.240))
フレームサイズを小さく表示するようにしている。