OpenCV Error: (-215) scn == 3 || scn == 4 in ipp_cvtColor function

I tried to play the video from the file as indicated in the tutorials. My program was as follows:

import numpy as np import cv2 cap = cv2.VideoCapture('output.avi') while(cap.isOpened()): ret, frame = cap.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('outVideo',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() 

But I got the following error:

 Traceback (most recent call last): File "playVideo.py", line 8, in <module> frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.error: /home/hp/opencv/modules/imgproc/src/color.cpp:7456: error: (-215) scn == 3 || scn == 4 in function ipp_cvtColor 

I checked ret and it turned out to be false. Therefore, the problem is saving the video. I used the following code to save 'output.avi' using the VideoWriter function:

 import numpy as np import cv2 cap = cv2.VideoCapture(0) fourCc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi',fourCc,20.0,(640,480)) while(cap.isOpened()): ret, frame = cap.read() if ret==True: frame = cv2.flip(frame,0) out.write(frame) cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break else: break cap.release() out.release() cv2.destroyAllWindows() 

I cannot open 'output.avi' even using VLC

+6
source share
3 answers

At first:

check ret value with: ret == True

Secondly, as the textbooks say:

Make sure the correct ffmpeg or gstreamer versions are installed. Sometimes a headache works with Video Capture, mainly due to the incorrect installation of ffmpeg / gstreamer.

from: http://docs.opencv.org/3.1.0/dd/d43/tutorial_py_video_display.html#gsc.tab=0

Finally, check the video codec: Unable to open video from opencv2

+4
source

Change the while parameter - loop to ret - and the order cap.read () - ret is True if there is a valid next frame in the video / file stream.

 import numpy as np import cv2 cap = cv2.VideoCapture('output.avi') ret, frame = cap.read() while(ret): ret, frame = cap.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) cv2.imshow('outVideo',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break ret, frame = cap.read() cap.release() cv2.destroyAllWindows() 
+2
source

I encountered the same error. But the problem was with the missing package. It was not detected when using the jupyter laptop, but it appeared when I launched the .py terminal through the terminal.

 sudo apt-get install python-tk 

This solved the error for me, hope it helps someone else too :)

0
source

All Articles