Pythonでカメラ・動画データの処理【動画像解析超入門】

プログラミング・数学・英会話
スポンサーリンク

カメラや動画をpythonで扱いたいけどやり方がわからない、動画像の解析に興味があるのでとりあえず入門したい、物体検知などのAI技術を試すための前準備をしたいなどの方はこの記事を読んでください!

今回はpythonでopenCVを使ったカメラの使い方の基本を説明していきます

ノートパソコンに付属のカメラや、外付けのWebカメラ、および動画データの映像を読み込んだり、その結果を動画に書き出したりする方法について解説します

スポンサーリンク

対象読者

本ページでは、pythonの基本やpipなどによるインストール方法などはご存知の方を想定しています

何かご不明点があれば、遠慮なくコメント等でご質問ください

必要なライブラリのインストール

まずは下記のコマンドで最低限必要なライブラリをインストールしましょう

$ pip install opencv-python

これだけで大丈夫です

カメラ映像・動画データの読み込み、表示方法

下記のようなコードにより、カメラや動画の映像の読み込み、表示が可能です

このあたりはほぼテンプレートとして書くようなかんじです

# ライブラリのインポート
import cv2

# カメラ映像を使う時は0, 動画を読み込むときはcamera_pathに動画ファイルパスを指定します

# カメラの場合
camera_path = 0 

# 動画の場合
# camera_path = './movies/movie.mp4'

capture = cv2.VideoCapture(camera_path)
 
while True:
  # カメラ/動画の画像を1フレーム分取得
  ret, img = capture.read()
  if not ret:
    print("capture error!!")
    break

  # カメラの映像を表示する
  cv2.imshow('camera', img)  

  # qキーを押したら処理を終了する
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break


# いろいろ閉じる
capture.release()
cv2.destroyAllWindows()

カメラ映像・動画データの書き込み方法

つづいて読み込んだカメラ映像や・動画データの書き込み方法です

下記のようなコードにより、動画の出力が可能です

追加部分と書いているあたりをみてください

こちらもはほぼテンプレートとして書くようなかんじです

実際は「このあたりに1フレームごとに処理を加えたりする」と書いているところに読み込んだ映像の1フレームごとに処理をほどこして、その結果を動画として出力するといったことをします

# ライブラリのインポート
import cv2

# カメラ映像を使う時は0, 動画を読み込むときはcamera_pathに動画ファイルパスを指定します

# カメラの場合
camera_path = 0 

# 動画の場合
# camera_path = './movies/movie.mp4'

capture = cv2.VideoCapture(camera_path)

#########################################
# 追加部分
#########################################
# カメラ・動画画像の横幅、縦幅を取得
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
# print("camera size:", width, height)

# カメラ・動画のFPSを取得
fps = capture.get(CV2.CAP_PROP_FPS)
# print("fps:", fps)

fourcc = cv2.VideoWriter_fourcc(*'DIVX') # aviファイルで出力する場合
# fourcc = cv2.VideoWriter_fourcc(*'MP4V') # mp4ファイルで出力する場合

outvideopath = 'output.avi'
out = cv2.VideoWriter(outvideopath, fourcc, fps, (width, height))

while True:
  # カメラ/動画の画像を1フレーム分取得
  ret, img = capture.read()
  if not ret:
    print("capture error!!")
    break

  ########################################
  # このあたりに1フレームごとに処理を加えたりする
  ########################################

  # カメラの映像を表示する
  cv2.imshow('camera', img)  

  #########################################
  # 追加部分
  #########################################
  out.write(img)

  # qキーを押したら処理を終了する
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break


# いろいろ閉じる
capture.release()
out.release()
cv2.destroyAllWindows()

最後に

いかがでしたでしょうか?

このあたりは、pythonでカメラや動画を扱う上での基本です

細かくコードを覚える必要はないので、本ページをブックマークしたりして、コピペして使ったりしてください

今後もこういった目的別のプログラミングの実装方法を紹介していきたいと思います

次のプログラミング記事です!

コメント

Copied title and URL