回溯(最近通话最近):
在文件“ 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有关。
答案 0 :(得分:1)
即使我有同样的问题,解决方案也很简单。请记住一件事,如果图像的RGB值在0-255的范围内,请确保这些值不是数据类型“ float”。由于OpenCV仅在值范围为0-1时才考虑浮动。如果发现浮点值大于1,则会认为该浮点仅存在于0-1之间,因此会截断该值。因此,产生了这样的错误。因此,如果值介于0-255之间,则将数据类型转换为uint8。
image = image.astype('uint8')
答案 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极几何