前提・実現したいこと
OpenCVを用いて動画に画像処理加えて、ループ再生したいです。
7 s程度の短い動画をループ再生していますが、
・処理を加えない → 何度もループして再生
・二値化処理を加えた → 一度だけ再生された後、応答なしになる
のようになります。
応答なしになったとき、以下のようなエラーが表示されます。
発生している問題・エラーメッセージ
error Traceback (most recent call last) <ipython-input-2-2aa4646b077e> in <module> 17 while True: 18 ret, frame = cap.read() ---> 19 frame = test(frame) 20 if ret: 21 cv2.imshow(window_name, frame) <ipython-input-2-2aa4646b077e> in test(im) 2 3 def test(im): ----> 4 im_gray = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY) 5 im_gray_th = cv2.threshold(im_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] 6 return im_gray_th error: OpenCV(4.1.2) ..\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
該当のソースコード
python3
1import cv2 2 3def test(im): 4 im_gray = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY) 5 im_gray_th = cv2.threshold(im_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] 6 return im_gray_th 7 8file_path = r"パス" 9delay = 25 10window_name = 'frame' 11 12cap = cv2.VideoCapture(file_path) 13 14if not cap.isOpened(): 15 sys.exit() 16 17while True: 18 ret, frame = cap.read() 19 frame = test(frame) 20 if ret: 21 cv2.imshow(window_name, frame) 22 if cv2.waitKey(delay) & 0xFF == ord('q'): 23 break 24 else: 25 cap.set(cv2.CAP_PROP_POS_FRAMES, 0) 26 27cv2.destroyWindow(window_name)
補足情報(FW/ツールのバージョンなど)
python 3.6.9
opencv 4.1.2
tornade 4.5.3
holoviews 1.13.2
scipy 1.4.1
openpyxl 3.0.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/17 02:08