OpenCV Error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'


Even I had the same problem, and the solution was quiet easy. Remember 1 thing, if the RGB values of your image lie in the range of 0-255, make sure the values are not of data type 'float'. As OpenCV considers float only when values range from 0-1. If it finds a float value larger than 1 it clips off the value thinking floats only exists between 0-1. Hence such errors generated. So convert the data type to uint8 if values are from 0-255.

image = image.astype('uint8')

Check this Kaggle Kernel to learn more about it


Just in case if anyone is still having the same error even after applying the above fix then do check the depth of your image i.e. Check whether the image is grayscale or colored since cv2.COLOR_BGR2GRAY cannot convert images that are already grayscale and thus throws up this error.

Well I was doing the Epipolar Geometry (find the link below) and I had this issue. I solved this error by doing one of the two methods:

First method - keeping the original colors: A. I load the image with its original color (in my case it was RGB) by deleting the zero parameter from cv2.imread.

img1 = cv2.imread('image.jpg') 

B. You might need to edit the shape of the image since it is RGB

r, c,_ = img1.shape 

C. Comment the conversion

# img1 = cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR)

The second method - converting into grayscale image: A. I load the image in BGR by adding the zero parameter into cv2.imread.

img1 = cv2.imread('image.jpg',0) 

B. You might need to edit the shape of the image since it is BGR

r, c = img1.shape 

C. Now you can convert the image into grayscale image

img1 = cv2.cvtColor(img1,cv2.COLOR_GRAY2BGR)

If the two methods do not work for you, you might need to check the links below they might have answer your question:

Epipolar Geometry