Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 OpenCV:inRange()停止工作,没有任何更改_Python_Opencv_Object Detection - Fatal编程技术网

Python OpenCV:inRange()停止工作,没有任何更改

Python OpenCV:inRange()停止工作,没有任何更改,python,opencv,object-detection,Python,Opencv,Object Detection,我目前正在用Raspberry Pi 3模型B对一个橙色球进行实时目标检测。下面的代码应该是拍摄一帧,然后使用cv2.inRange()函数,使用RGB(BGR)过滤掉图像。然后我应用拨号和腐蚀来消除噪音。然后我找到轮廓并画出来。这个代码一直有效到现在。但是,当我今天运行它而不更改它时,我得到以下错误: Traceback (most recent call last): File "/home/pi/Desktop/maincode.py", line 12, in <module&

我目前正在用Raspberry Pi 3模型B对一个橙色球进行实时目标检测。下面的代码应该是拍摄一帧,然后使用cv2.inRange()函数,使用RGB(BGR)过滤掉图像。然后我应用拨号和腐蚀来消除噪音。然后我找到轮廓并画出来。这个代码一直有效到现在。但是,当我今天运行它而不更改它时,我得到以下错误:

 Traceback (most recent call last):
 File "/home/pi/Desktop/maincode.py", line 12, in <module>
   mask = cv2.inRange(frame, lower, upper)
error: /build/opencv-ISmtkH/opencv-2.4.9.1+dfsg/modules/core/src/arithm.cpp:2701: error: (-209) The lower bounary is neither an array of the same size and same type as src, nor a scalar in function inRange

您收到的错误几乎肯定意味着您有一个空图像(或者您混淆了输入图像的大小)

OpenCV中的网络摄像头捕获通常以一个或两个黑色/emtpy图像(蹩脚的驱动程序)开始。因为它太快了,所以你没有注意到这一点。但是,如果要处理图像,这将对应用程序产生影响。因此,我建议您在继续计算之前检查图像。只需在您的
capture.read()
行之后添加以下内容:

if ret == True:

注意:确保(通过在控制台或其他地方打印)只有在开始捕获时才会发生这种情况。如果这种情况经常发生(网络摄像头中的空帧),可能是因为其他原因(或者网络摄像头可能有问题)。另外,请在另一台计算机上进行检查。

您确定要输入的帧
mask=cv2。范围(帧,下,上)
不是空的吗?在此声明之前,请尝试打印
frame.shape
。我希望这能解决您的问题!如果问题只发生在第一帧,不要担心。我也有多个摄像头。如果以后仍然发生这种情况,这确实可能是一个与硬件相关的问题。确保Pi获得足够的功率。还可以尝试使用另一台网络摄像头或在另一台计算机上使用原始网络摄像头进行测试。看看问题是否仍然存在。祝你的比赛好运!另外,如果这个答案解决了你的问题,别忘了接受它作为答案!
if ret == True: