Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python OpenCV cv2 OpenCV错误:在未知函数、文件..\\\..\modules\imgproc\src\color.cpp中断言失败(scn==3 | | scn==4)_Python 2.7_Numpy_Opencv_Image Processing - Fatal编程技术网

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

Python 2.7 Python OpenCV cv2 OpenCV错误:在未知函数、文件..\\\..\modules\imgproc\src\color.cpp中断言失败(scn==3 | | scn==4),python-2.7,numpy,opencv,image-processing,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,

我正在尝试使用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
运行文件中的文件“C:\Python27\lib\site packages\spyderlib\widgets\externalshell\sitecustomize.py”,第540行 OpenCV错误:在未知函数、文件..\\..\modules\imgproc\src\color.cpp的第3402行,断言失败(scn==3 | | scn==4) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 execfile(文件名、命名空间) 文件“C:/Users/Prashant/.spyder2/.temp.py”,第15行,在 imgray=cv2.CVT颜色(im,cv2.COLOR\U BGR2GRAY) cv2.error:..\..\modules\imgproc\src\color.cpp:3402:error:(-215)scn==3 | | scn==4
它说,在应用函数
cv2.cvtColor
之前,您的输入图像应该有3或4个通道

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


关键是你的图像应该有3个维度,
深度
,如果你在带有PI摄像头的树莓PI上遇到此错误,请先尝试运行此命令:

sudo modprobe bcm2835-v4l2
第一次印刷。 如果显示为false,则您的图像拍摄不正确。 如果显示为True,请尝试此命令-sudo modprobe bcm2835-v4l2
或者在/etc/modules文件的底部添加bcm2835-v4l2。

我遇到了这个问题,无法找到解决方案,但在web上,它起到了作用。我的解决方案几乎很有趣——你不能有两条流。我关掉了网络流,然后一切都好了

@Abid祝贺您获得金质徽章。谢谢您@karlphillip。我想你需要一个朋友来分享黄金:)改变形象不是这样的。如果它是一个视频文件,并且您试图捕获每一帧,但在某些帧中找不到形状,那么您不应该仅仅因为某些帧没有正确的形状属性而更改整个视频文件。你处理它会更好。如果它工作正常,图像加载不正确。图像的深度是多少?我的加载正确,但只有2个通道?