みなさん、お疲れ様です。
今回はPythonとOpenCVを使って画像と動画を表示する方法をご紹介します。
準備:OpenCVのインストール
pip install opencv-python
まずは上記のコードをコンソールで実行して、OpenCVをインストールしましょう。
環境によっては、OpenCVのインストールは時間がかかるかもしれません。
インストールが終わったら、pythonを起動して、バージョン確認もしてみましょう。
import cv2 cv2.__version__
このコードでエラーが出た場合は、OpenCVを再度インストールしましょう。
OpenCVで画像を読み込む
import cv2 import os os.chdir('/Users/〇〇〇〇/Desktop/')#ディレクトリはMacバージョン filename = "pig.jpg" img = cv2.imread(filename)
OpenCVでファイルを読み込む前に、一応画像や動画があるディレクトリに移動しておきます。
それはosでディレクトリを移動することができます。
※2:cv2.IMREAD_GRAYSCALE : グレースケール画像として読み込む
※3:cv2.IMREAD_UNCHANGED : アルファチャンネルも含めた画像として読み込む
※4:上記は1,0,−1で指定することができる
OpenCVで画像情報を取得する
#画像のサイズを取得する hight, width, chanel = img.shape[:3] print("画像の大きさ: ", img.shape) print("画像の高さ: ",hight) print("画像の幅; ",width) print("画像のデータ型: ", type(img.shape)) print("channel数: ", chanel) print("画像の構成を確認\n", img) #画素数の表示 pixels = hight * width
次に画像のサイズを取得していきます。
img.shapeは画像の高さと幅、チャンネル数を取得することができます。
ここでいうチャンネル数は、RGBだったら赤と緑と青の色情報が3種類あるので3,
グレースケールは色情報は色情報はモノクロの1種類ですので、1となります。
OpenCVで動画を読み込む
#動画のファイルを読み込む movename = "/Users/〇〇〇〇/Desktop/動画ファイル名.mp4" cap = cv2.VideoCapture(movename)
動画ファイルを読み込む方法は、VideoCapture関数で読み込みます。
第一引数にファイル名を読み込みます。
※第一引数に0を入力すると、WEBカメラから動画の取得ができます。
OpenCVは動画情報を読み取る
ret, frame = cap.read() #動画ファイルの情報を取得する width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) hight = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) total_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT) fps = cap.get(cv2.CAP_PROP_FPS) print("動画の幅: ", width) print("動画の高さ: ", hight) print("総フレーム数: ", total_frame) print("fps: ", fps) print("動画の長さ: ", total_frame/fps, "[sec]")
動画のフレームや高さと幅などのプロパティを取得するには、get()関数を使用します。
cap.get(引数1)関数の引数1の説明は以下に示した通りです。
OpenCVでWEBカメラから動画情報を取得する
#webカメラで動画をとるとき cap = cv2.VideoCapture(0) video_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)#データ型はfloat型 video_hight = cap.get(cv2.CAP_PROP_FRAME_HIGHT) while True: #VideoCaptureから1フレームを取得する ret, frame = cap.read() #VideoCaptureから取得した1フレームを表示 cv2.imshow("vidoframe", frame) #キーボード入力を1ms待つ k = cv2.waitKey(10) if k == 27:#キーボードからESC(27)が入力されたら終了 break cap.release() cv2.destroyAllwindows()
webカメラをPCに接続した状態で、cv2.VideoCapture(引数1)の引数1を0に指定すると、webカメラからの情報の取得が開始されます。
ここで注意したいのは、webカメラからの情報はこちらから処理を中止するコードを挿入しないと、永遠と記録され続けます。
そのため、基本的にcv2.waitKey()関数でキーボード入力を受け付けます。
※引数1:入力待ち時間(ミリ秒単位)0の場合は無制限にキーボードの入力を待ち続けます。
まとめ
今回はOpenCVとPythonを使って、動画と画像の読み込みをやってみました。
OpenCVを使ってたくさん画像処理・動画処理しましょう!
では!
コメント