OpenCV错误:(-215:断言失败)函数'CvtHelper'中的VScn :: contains(scn)&& VDcn :: contains(dcn)&& VDepth :: contains(depth)

时间:2018-10-10 11:24:03

标签: python opencv color-space

回溯(最近通话最近): 在文件“ demo.py”的第132行中      result = find_strawberry(image) 在find_strawberry中的文件“ demo.py”,第63行 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:错误:(-215:断言失败)VScn ::包含(scn)&& VDcn :: contains(dcn)&& VDepth :: contains(depth)in function'CvtHelper'

我个人在这个问题上花了很多时间,因此认为与将其发布到Stackoverflow有关。

问题取自:llSourcell/Object_Detection_demo_LIVE

4 个答案:

答案 0 :(得分:1)

即使我有同样的问题,解决方案也很简单。请记住一件事,如果图像的RGB值在0-255的范围内,请确保这些值不是数据类型“ float”。由于OpenCV仅在值范围为0-1时才考虑浮动。如果发现浮点值大于1,则会认为该浮点仅存在于0-1之间,因此会截断该值。因此,产生了这样的错误。因此,如果值介于0-255之间,则将数据类型转换为uint8。

image = image.astype('uint8')

选中此Kaggle Kernal

答案 1 :(得分:1)

在opencv中使用跟踪栏时遇到相同的错误,但是此方法解决了该问题:

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

其中img是您的图片

答案 2 :(得分:0)

仅在万一应用了上述修复后,如果仍然有相同错误的情况下,请检查图像的深度,即检查图像是grayscale还是colored,因为{{1} }无法转换已经cv2.COLOR_BGR2GRAY的图像,从而引发此错误。

答案 3 :(得分:0)

我正在做对极几何(找到下面的链接),所以遇到了这个问题。我通过执行以下两种方法之一解决了该错误:

第一种方法-保留原始颜色: A.通过从cv2.imread中删除零参数,以原始颜色(在我的情况下为RGB)加载图像。

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

B。您可能需要编辑图像的形状,因为它是RGB

r, c,_ = img1.shape 

C。评论转换

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

第二种方法-转换为灰度图像: 答:我通过将零参数添加到cv2.imread中,以BGR加载图像。

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

B。您可能需要编辑图片的形状,因为它是BGR

r, c = img1.shape 

C。现在,您可以将图像转换为灰度图像

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

如果这两种方法都不适合您,则可能需要检查下面的链接,它们可能已经回答了您的问题:

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

E极几何

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