OpenCVでUSBカメラの映像を取り込む1

前回まででJetsonNanoのセットアップは完了しました。
今回からは、車の死角をカバーするという目的のために、記事を書いていこうと思います。

車のどこの死角を見える化するか?

私は、日産のエクストレイルに乗っています。下記のような車。

ボンネットが割と高いため、車直前の位置は死角になります。
そのため、まずは、そこからアプローチ。(緑のあたりを見えるようにしたい)

どうやって見える化するか?

いろいろ方法はあると思うが、今回は、USBカメラを使用しようと思います。USBカメラならOpenCV使って割と簡単に画像を読み込めるし。ただし、USBカメラの画角がそれほど大きくないので、少なくとも2台のカメラを使用し、車幅全体をカバーする必要があるかもしれません。
※星がカメラの設置位置候補。微調整は、実機で。

何はともあれ、まずは、USBカメラ1台から映像を取得し、モニタに表示するアプリを作成します。

早速プログラミング

以下がそのプログラムです。
とりあえずのテストなのでべた書きです。

import cv2

capture1 = cv2.VideoCapture(0)

while(True):
    ret, frame = capture1.read()
    
    img = cv2.rotate(frame, cv2.ROTATE_180)
    cv2.imshow('title', img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

capture1.release()
cv2.destroyAllWindows()

で、実行するとこんな感じ。
被写体は、主役のJetsonNanoとフクロウさん。

画面には以下のような感じで表示されてます。

さすが、OpenCV。めちゃくちゃ簡単にカメラの画像を取り込めました。取り込んでは表示とwhileループで繰り返しているので、見かけ上、動画のような感じになってます。
JetsonNanoの処理性能もすこぶるもの、この程度の画像表示では全く負荷になっていない。

次回は、二つのカメラからの映像を同時に取得して表示するプログラムを書こうと思います。

・・・JetsonNanoの起動時間がそこそこかかる模様。(45秒位)

何とかしないと、車が走り出すまでに画像が表示できないかも。
まあ、この辺の課題もおいおい解決していきます。

本日は、ここまで。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です