Pythonで動画にOpenCVのCanny処理をして表示するプログラムを紹介します
Pythonで動画にOpenCVのCanny処理をして表示するプログラムを紹介します。
動画の読み込みと表示はこちらの投稿で「Python OpenCVを使った動画の読み込みと表示」紹介しているので、この投稿ではCanny処理をするプログラムをメインに紹介します。
読み込んで表示した動画は「Pexels」の動画を使わさせてもらいました。
目次
・Canny処理について
・通常の動画
・Canny処理をした動画
・動画にCanny処理をするプログラム
・cv2.Canny(gray, 10, 10)にして表示した画像
Canny処理について
cv2.Cannyはグレイ(灰色)にした画像から指定した引数に従って、エッジ(輪郭)を見つけ出します。
引数に設定した値が小さいほどエッジが検出され、大きいほどエッジが検出されにくいです。
この投稿の下に引数の値を小さくしてCanny処理をした画像を載せています。
通常の動画
Canny処理をしていない通常の動画になります。
Canny処理をした動画
動画にCanny処理をするプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import cv2 import numpy as np mv= cv2.VideoCapture('production ID_パソコン.mp4')#動画の読み込み frame_count =int(mv.get(cv2.CAP_PROP_FRAME_COUNT))#動画のフレームをすべて取得 print("総フレーム",frame_count) for i in range(frame_count): ch,frame=mv.read()#1フレームずつ取り出す if ch==True:#取り出せたら、変数chにTrueが入ります frame=cv2.resize(frame,(600,400)) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) canny = cv2.Canny(gray, 100, 100) cv2.imshow('movie', canny)#表示 k=cv2.waitKey(1)#1ミリ秒間フレームを表示 if k==27:#ESCキーを押したとき終了 break mv.release()#動画を閉じる cv2.destroyAllWindows()#ウインドウを閉じる |
12、13行目のCanny処理をするプログラムの説明をします。
12行目は読み込んだ画像をcv2.cvtColorでグレイ画像にしています
13行目はcv2.Cannyで指定した引数(100,100)に従って、エッジ(輪郭)を検出しています。
動画とは違い静止画にcv2.thresholdとcv2.Cannyをして比較した投稿がこちら↓になります。
「cv2.thresholdとcv2.Cannyの比較をしてみた」
cv2.Canny(gray, 10, 10)にして表示した画像
