前提・実現したいこと
グレースケールで動画を読み取って差分を求めるプログラムを書いたのですが,差分の配列は表示されるのにエラーをはいていて解決できません。プログラム素人なのでご教授お願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ ```error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' ### 該当のソースコード ```ここに言語名を入力 ソースコード ```import cv2 import numpy as np import time i = 0 # カウント変数 th = 30 # 差分画像の閾値 # 動画ファイルのキャプチャ cap = cv2.VideoCapture('outtest.m4v') # 最初のフレームを背景画像に設定 ret, bg = cap.read() # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY) while (cap.isOpened()): # フレームの取得 ret, frame = cap.read() # グレースケール変換 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 差分の絶対値を計算 mask = cv2.absdiff(gray, bg) # 差分画像を二値化してマスク画像(モノクロ)を算出 mask[mask < th] = 0 mask[mask >= th] = 255 # フレーム画像を表示(モノクロ) cv2.imshow("Flame", gray) # 背景画像を表示(モノクロ) cv2.imshow("Background", bg) # 待機(0.03sec) time.sleep(0.03) i += 1 # カウントを1増やす # 背景画像の更新(一定間隔) if(i > 30): ret, bg = cap.read() bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY) i = 0 # カウント変数の初期化 print(gray, bg) # xキーが押されたら途中終了 if cv2.waitKey(1) & 0xFF == ord('x'): break cap.release() cv2.destroyAllWindows() ### 試したこと 調べるとファイルの中に日本語などがあるとこのようなエラーをはくと書いてあったので日本語の部分を消したのですが一向に治る気配がありません ### 補足情報(FW/ツールのバージョンなど) python4.3.0を使用、opencvを使用、環境はwindows10です、スパイダーを使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/18 04:44