Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 为什么net.forward在cv2中使用第二个映像时出错?_Python 3.x_Opencv Python_Openvino - Fatal编程技术网

Python 3.x 为什么net.forward在cv2中使用第二个映像时出错?

Python 3.x 为什么net.forward在cv2中使用第二个映像时出错?,python-3.x,opencv-python,openvino,Python 3.x,Opencv Python,Openvino,我正在测试python opencv(cv2),以使用openvino DNN模型检测多个图像。 我的首次检测代码: import cv2 dog=cv2.imread("dog.jfif") cat=cv2.imread("cat.jfif") net=cv2.dnn.readNet("ssd_mobilenetv2_fp16_scale2.xml","ssd_mobilenetv2_fp16_scale2.bin"

我正在测试python opencv(cv2),以使用openvino DNN模型检测多个图像。 我的首次检测代码:

import cv2
dog=cv2.imread("dog.jfif")
cat=cv2.imread("cat.jfif")
net=cv2.dnn.readNet("ssd_mobilenetv2_fp16_scale2.xml","ssd_mobilenetv2_fp16_scale2.bin")
blob=cv2.dnn.blobFromImage(dog)
net.setInput(blob)
out=net.forward()
在此之前,不会显示任何错误,
print(out)
显示“dog”检测成功。 但当我通过添加以下几行继续下一次检测“cat”图像时:

blob=cv2.dnn.blobFromImage(cat)
net.setInput(blob)
out=net.forward()
我得到:

>>> out = net.forward()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.3.0-openvino) ../opencv/modules/dnn/src/ie_ngraph.cpp:522: error: (-215:Assertion failed) !isInitialized() in function 'initPlugin'
out=net.forward() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 cv2.error:OpenCV(4.3.0-openvino)…/OpenCV/modules/dnn/src/ie_ngraph.cpp:522:error:(-215:断言失败)!函数“initPlugin”中的isInitialized()
为什么会发生这种错误?第二次检测的正确方法是什么?

可能您可以尝试分别运行dog和cat检测,因为程序可能会混淆在执行blob期间同时出现的两个输入

另一种解决方法是,如果仍希望它们同时工作,请以不同的方式命名blob,例如:

狗:

blob1=cv2.dnn.blobFromImage(dog)
net.setInput(blob1)
给猫

blob2=cv2.dnn.blobFromImage(cat)
net.setInput(blob2)
这样函数net.setInput(blob)就不会混淆它应该引用哪个输入


谢谢

可能您可以尝试分别运行dog和cat检测,因为程序可能会混淆在执行blob期间同时出现的两个输入

另一种解决方法是,如果仍希望它们同时工作,请以不同的方式命名blob,例如:

狗:

blob1=cv2.dnn.blobFromImage(dog)
net.setInput(blob1)
给猫

blob2=cv2.dnn.blobFromImage(cat)
net.setInput(blob2)
这样函数net.setInput(blob)就不会混淆它应该引用哪个输入

谢谢