私は車の正面図が記録されたビデオを持っています。ファイルは.mp4なので、より多くの情報(オブジェクト、レーンラインなど)を抽出できるように、単一の画像を処理したい。問題は、処理されたファイルからビデオを作成したいときにエラーが発生することです。ここで私はこれまでやっていることです:Python:処理された画像のビデオを作成する
- は)(cv2.VideoCaptureでビデオを開設 - cv2.imwriteとビデオ(の単一のフレームを保存細かい
- ワークス) - 作成罰金
- 作品cv2.VideoWriterを持つ単一のフレームのうちビデオ() - cv2.cvtColorで動画を(後処理
- ファインワークス)、cv2.GaussianBlur()とcv2.Canny() - のうちのビデオを作成する
- ファインワークス処理された画像 - 機能しません。ここで
私が使用したコードです:
enter code here
def process_image(image):
gray = functions.grayscale(image)
blur_gray = functions.gaussian_blur(gray, 5)
canny_blur = functions.canny(blur_gray, 100, 200)
return canny_blur
process_on =0
count =0
video= cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*"MJPG"), 10, (1600, 1200))
vidcap = cv2.VideoCapture('input.mp4')
success,image = vidcap.read()
success = True
while success:
processed = process_image(image)
video.write(processed)
これは私が取得エラーです:
OpenCV Error: Assertion failed (img.cols == width && img.rows == height*3) in cv::mjpeg::MotionJpegWriter::write, file D:\Build\OpenCV\opencv-3.2.0\modules\videoio\src\cap_mjpeg_encoder.cpp, line 834 Traceback (most recent call last): File "W:/Roborace/03_Information/10_Data/01_Montreal/camera/right_front_camera/01_Processed/Roborace_CAMERA_create_video.py", line 30, in video.write(processed) cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\videoio\src\cap_mjpeg_encoder.cpp:834: error: (-215) img.cols == width && img.rows == height*3 in function cv::mjpeg::MotionJpegWriter::write
私の提案は次のとおりです。通常のイメージがあるため、RGBカラーの3次元を持っていますフィールド。処理された画像は1つの次元しか持たない。どうすればこれをcv2.VideoWriter関数で調整できますか?あなたの助け
彼のコードには他にもいくつかのあいまいさがありますので、あなたの答えに答えてください。例えば、フレームサイズはコンストラクタに与えられたサイズと一致しなければならず、 'VideoWriter'クラスは自動的にctorに合うようにフレームのサイズを変更しません。また、彼はループでフレームを書いているが、ループの外にあるフレームを読み込んでいる。 – zindarod
@Zindarodはいいですね。私はOPが一連の作業行為を列挙しているため、これらの提案は含まれていなかったので、私はOPがおそらくこれを正しく使用していると思わせたが、悪い例を貼り付けただけだった。しかし、私は間違っている可能性があります。また、他の人が質問に遭遇した場合にも書く価値があるので、提案に感謝します。 –