Pythonで動画を逆再生にするプログラムを紹介します

PythonのOpenCVとリストのスライスを使って動画を逆再生にするプログラムを紹介します。

この投稿で使っている動画はPexelsさんの動画を使っています。

目次

・逆再生する前の動画

・逆再生している動画


・逆再生するプログラム


・import pickleで逆順にしたリストデータを保存


・保存したリストデータを読み込んで表示

逆再生にする前の動画

「逆再生する前の動画」のプログラムはこちら「Python OpenCVを使った動画の読み込みと表示」の投稿で紹介したプログラムを使っています。



逆再生している動画

逆再生するプログラム

プログラムの説明をします。

7行目は読み込んだ動画を1フレーム(画像)ずつ取り出したデータを入れるためのリストを用意しています。

13行目はcv2.resizeで表示する動画のサイズを調整しています。※この処理がないとエラーがでます。あと、私のパソコンではこのエラーを何回も出すと、”プログラムを実行するための十分なメモリがありませんでした”と表示され、画面が真っ暗になり強制終了されました。

14行目は7行目で用意したリストにappendで1フレーム(画像)ずつ追加しています。

17行目はリストのスライスを使ってリストデータの並びを逆順にしています。
リストのスライスについてはこちらリストを使ったPythonのスライスをColaboratoryで実行の投稿で紹介しています。

20行目~26行目で逆順にしたリストデータを1画像ずつ5ミリ秒間の間隔を空けて表示しています。
これで逆再生の動画のように写ります。

上のプログラムだと読み込んだ動画を1フレームずつリストに追加して、さらに逆順にする処理をしてから表示しているので、時間がかかってしまします
それを解決するために逆順にしたリストデータをあらかじめimport pickleで保存し、別プログラムで保存したデータを読み込んで表示します。
そのプログラムがこちら↓になります。

import pickleで逆順にしたリストデータを保存

2行目でimport pickleを追加しています。

21、22行目で逆順にしたリストデータをimport pickleで保存しています。

保存したリストデータを読み込んで表示

4、5行目はpickleファイルで保存している逆順にしたリストデータを読み込んで変数mv_dataに入れています。

8行目から~14行目で読み込んだデータを表示しています。