Python-OpenCV cv2 OpenCV错误:未知函数中的断言失败(scn == 3 || scn == 4),文件.. \ .. \ .. \ modules \ imgproc \ src \ color.cpp

时间:2013-12-29 04:54:48

标签: python-2.7 numpy opencv image-processing

我正在尝试使用cv2学习python中的轮廓。

我尝试了教程指南中给出的以下代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

im = cv2.imread('C:\Users\Prashant\Desktop\test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
img = cv2.drawContour(im, contours, -1, (0,255,0), 3)
cv2.imshow('Image1',img)

我收到此错误:

File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 540, in runfile
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in unknown function, file ..\..\..\modules\imgproc\src\color.cpp, line 3402
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
   execfile(filename, namespace)
 File "C:/Users/Prashant/.spyder2/.temp.py", line 15, in <module>
   imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
 cv2.error: ..\..\..\modules\imgproc\src\color.cpp:3402: error: (-215) scn == 3 || scn == 4

4 个答案:

答案 0 :(得分:84)

它表示在应用函数cv2.cvtColor之前,您的输入图像应该有3或4个通道。

所以在print im.shape应用函数之前检查图像形状。如果结果是None type(大多数情况下,这是问题),您的图像未正确加载,很可能是因为您的路径不正确。

关键是您的图片应该有3个维度,rowscolumnsdepth

答案 1 :(得分:1)

如果您在使用PI camera的树莓PI上收到此错误,请先尝试运行此命令:

sudo modprobe bcm2835-v4l2

答案 2 :(得分:1)

第一次打印。 如果显示为假,则表示您的图像无法正确拍摄。 如果显示为True,请尝试以下命令-sudo modprobe bcm2835-v4l2 或者在您的/ etc / modules文件中,在底部添加bcm2835-v4l2。

答案 3 :(得分:-2)

我遇到了这个问题,找不到解决方案,但是在网络上,它正在运行。我的解决方案几乎很有趣-您不能有两个流。我关闭了网络流,然后一切正常!