Python+OpenCVによる動画処理のためのテンプレコード

Python
スポンサーリンク

OpenCVとは

インテル社が開発したオープンソースの画像処理用ライブラリです。PythonだけでなくC++やMATLABなどでも使えます。
ちなみにPythonにおいては標準でPillowというものが入っているのですが、OpenCVではより高度な処理が実現できます。
具体的には画像処理・解析そして画像向け機械学習(SVMやランダムフォレストなど)の機能があります。

当記事で紹介しているソースコードはOpenCV for Pythonによるものです。

OpenCVのインストール

AnacondaでPythonを導入されている方は既に入っているかと思いますので操作は不要です。

一例としてpipでインストールする場合、以下のようにターミナルに打ち込むことでインストールされます。
PCやPythonの環境によってはエラーが出てしまうかもしれませんが基本はこちらで大丈夫かと思われます。

pip install opencv-contrib-python

動画処理のためのソースコード

はじめに

OpenCVは画像処理用ライブラリだと紹介いたしましたが、動画も所詮は画像の集合体なので当然OpenCVによって処理することが可能です。
当記事では、動画処理のためのテンプレートとなるソースコードを紹介いたします。紹介したソースコードを参考に新たな動画処理プログラムをぜひ作ってみてください。

テンプレのソースコード

基本的にはソースコード内の###処理の心臓部###という部分を書き換えることで、任意の動画処理が出来るようになっています。
以下のソースコードでは、一例としてWEBカメラで取得した映像をリアルタイムで反転するものとなっています。
各行の処理について自分なりの解説をコメントアウトに記載しましたので、ぜひ参考になさってください。

import cv2 #OpenCV
import sys #exit()で使う

cap = cv2.VideoCapture(0) #VideoCapture()ではWEBカメラや保存された映像を呼び出せる
#引数に数字を入れるとWEBカメラ画像をキャプチャできる。内蔵WEBカメラは大抵0。外付けしたりするとそのカメラには1が割り当てられる。外付けの個数で番号は増える。
#引数に動画ファイル名を書くことで既存の動画をキャプチャできる。

delay = 1 #waitKey用 

if cap.isOpened() == False: #VideoCaptureで正常にキャプチャされないとき、正常終了する
    print("capture error")
    sys.exit()

while cap.isOpened(): #Videocapture()で正常にキャプチャされればTrueを返し、While内が実行される #While(True)でも処理は可能だがキャプチャエラーした場合強制終了という形になる
    ret, img_src = cap.read() #cap.read()はフレームの読み込みが正常に行われればTrueを返す。

    ###以下処理の心臓部###
    #一例として映像の反転処理を行っている
    img_dst = cv2.flip(img_src, flipCode = 1) 
    #flip動作 flipcode 0はx軸反転 1はy軸 -1は両軸

    ###以上処理の心臓部###

    cv2.imshow('src',img_src) #表示imshow 入力映像の表示
    cv2.imshow('dst',img_dst) #出力映像の表示
    ch = cv2.waitKey(delay) #キー入力待ち
    if ch == ord('q'): #qを打ち込まれたらWhileループを抜け出す #ord():そのキーのユニコードを返すもの エンターで終了させたい場合は()内に13を指定する
        break

cap.release() #書かなくても勝手にキャプチャは開放されるが念のため
cv2.destroyAllWindows() #今出ているHighGUIウィンドウを終了
#cv2.DestroyWindow(name) #指定のウィンドウを終了

ちなみに静止画になりますが、こんな感じで映像出力されます。
WEBカメラ入力の映像は左のsrcウィンドウで、右のdstウィンドウが出力の映像です。
史上最高のボディビルダーことロニーコールマンがちゃんと反転されていることが分かりますね。ライウェイベイベー

マスルキン

当ブログ管理人のマスルキンです。

高専電気系学科に5年間在籍。卒業後は専攻科に進学し現在に至る。

生まれつき聴覚障害があり
補聴器の使用、コミュニケーションでは読唇や手話などを用いています。

当ブログでは
・プログラミング・研究関係の備忘録
・趣味(筋トレ、カメラ、プラモデル、etc...)
・自身の日常
などを自由気ままに皆様に発信いたします。

記事が皆様のお役に立てば幸いです。

マスルキンをフォローする
Python コンピュータビジョン プログラミング
スポンサーリンク
マスルキンをフォローする
マスルキンの部屋

コメント

  1. […] Python+OpenCVによる動画処理のためのテンプレコードOpenCVとはインテル社が開… […]

タイトルとURLをコピーしました