前提・実現したいこと
opencvのimshow()メソッドを使って動画を再生させたい。
僕は今vsCodeを使ってopenCVのメソッドを使いながら色々と試していたのですが、imshow()メソッドを処理し始めたとたん僕のpython launcherが応答しなくなります。20分ほど待っても応答しないので強制終了するしかありません。
発生している問題・エラーメッセージ
エラーのメッセージは出ません。下の画像の状態でプロンプトが帰って来なくなります。
この処理中に強制終了するためにlauncherを開くと、「アプリケーションが応答していません」とのこと
そしてやむなくlauncherを強制終了させるこうなる。
該当のソースコード
python
1 2import cv2 as cv 3from matplotlib import pyplot as plt 4 5filepath = "Videos/CatVideo.mp4" 6 7# 動画の読み込み 8cap = cv.VideoCapture(filepath) 9 10# 動画終了まで繰り返し 11while(cap.isOpened()): 12 # フレームを取得 13 ret, frame = cap.read() 14 15 # フレームを表示 16 # plt.imshow(frame) 17 # plt.show() 18 cv.imshow("Preview", frame) 19 20 # qキーが押されたら途中終了 21 if cv.waitKey(1) & 0xFF == ord('q'): 22 break 23 24cap.release() 25cv.destroyAllWindows 26
試したこと
色々試しました。
1:pythonのバージョンを3.9.1にアプデ→効果なし
2:モジュールを色々変えて試す(opencv-python, opencv-contrib-python, opencv-python-headless)→効果なし
3:pycharmにエディタを変えて同じコードを試す→効果なし
4:OS再起動(意味がないとわかっていながらも)→効果なし
5:cv2.startWindowThread();cv2.namedWindow("preview");cv2.imshow("preview", img)を使って先にウィンドウを表示させてみようとする
→startWindowThread()までは動くものの、namedWindow()で止まる。(デバックの結果)
補足情報
macOS Big Sur
Visual Studio Code
Python 3.9.1
opencv-contrib-python
他のimwrite()やimread()メソッドは問題なく動きます。imshow()などのshow()系がだめです。
半ば諦めているので、pyplotのimshow()メソッドを使って『動画』をフレームごとに再生させる方法を教えていただけると幸いです。このコードでは、qを押す、もしくはWindowを閉じるボタンを押さないと次のフレームに進みません。