Shravan Shetty
Shravan Shetty

Reputation: 1084

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

Traceback (most recent call last):
File "demo.py", line 132, in 
     `result = find_strawberry(image)`
File "demo.py", line 63, in find_strawberry
`image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)`
cv2.error: OpenCV(3.4.2) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/color.hpp:253: error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'CvtHelper'

I personally have spent a lot of time on this question, hence thought relevant to post it on Stackoverflow.

Question taken from: llSourcell/Object_Detection_demo_LIVE

Upvotes: 16

Views: 27332

Answers (5)

Sebastian Medina
Sebastian Medina

Reputation: 1

I had the issue I solve it doing this: if you are using Jupyter Lab and you are capturing frames from a webcam, be sure that other codes that uses that camera should be in "shutdown kernel" state. That fixes my issue

Upvotes: 0

Dhurub Saxena
Dhurub Saxena

Reputation: 57

get the same error while using trackbar in opencv but this method resolved it:

img = np.full((512,512,3), 12, np.uint8)

where img is your image

Upvotes: 1

Ahmadiah
Ahmadiah

Reputation: 476

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:

https://github.com/aleju/imgaug/issues/157 https://github.com/llSourcell/Object_Detection_demo_LIVE/issues/6

Epipolar Geometry

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_calib3d/py_epipolar_geometry/py_epipolar_geometry.html

Upvotes: 2

Rabbani
Rabbani

Reputation: 31

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.

Upvotes: 3

Shravan Shetty
Shravan Shetty

Reputation: 1084

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

Upvotes: 20

Related Questions