こんにちわ、lisです!
今回は「OpenCV-Pythonチュートリアル」をもとに作った、画像と動画の表示をするコードです。
画像を表示する
imgPathの画像を表示します。
Sキーを押すと、savePathに画像が保存されます。
import cv2 as cv def load(path): img = cv.imread(path, 0) return img def view(img): cv.namedWindow('image', cv.WINDOW_NORMAL) cv.imshow('image', img) def save(path, img): cv.imwrite(path, img) imgPath = './img/image.jpg' savePath = './img/output.jpg' img = load(imgPath) view(img) key = cv.waitKey(0) & 0xFF if key == 27: # ESC cv.destroyAllWindows() elif key == ord('s'): # s key save(savePath, img) cv.destroyAllWindows()
基本的な流れ
- imread()で画像を読み込む
- namedWindow()でウィンドウを作成
- imshow()で表示する
- destroyAllWindows()で全てのウィンドウを終了する
imshow()の第1引数は、対象のウィンドウ名称なので、namedWindow()の第1引数で指定した文字列と同じものを指定します。
動画を表示する
動画を表示します。
動画が終わるか、Qキーを押すと終了します。
import cv2 as cv def showFrame(frame): cv.imshow('frame', frame) movPath = './img/video.mp4' capture = cv.VideoCapture(movPath) while(capture.isOpened()): ret, frame = capture.read() if ret == True: showFrame(frame) key = cv.waitKey(1) & 0xFF if key == ord('q'): break else: break capture.release() cv.destroyAllWindows()
基本的な流れ
- cv.VideoCapture()で動画をキャプチャする
- capture.isOpened()でキャプチャが開かれているかチェックする
- 開かれている間ループする
- capture.read()で動画のフレームを取得する
- cv.imshow()で取得したフレームを表示する
- capture.release()、cv.destroyAllWindows()で終了する
動画のフレームは画像
動画は1つの映像のようなもの……
と思われておいて、高速なパラパラ漫画みたいなものです。
「パラパラ漫画の1枚分=フレーム」、つまりフレームは画像です。
なので画像表示と同様、cv.imshow()に渡すと画像のように表示されるわけですね。
これが高速に順次「表示!表示!表示!」とされることで、動画が流れてくれます。
参考
コチラを参考にしました。ありがとうございました!
あとがき
Python3のOpenCVで、画像と動画の表示をするコードでした!
やはり目に見えるものを扱っていると、成功するとパッと視覚化されるので楽しいですね!
想像以上に簡単にできるのでサクサク進めていきます!