Python cvNet.forward()错误(-215:断言失败)输入。大小()==函数';cv::dnn::dnn4_v20200609::数据层::getMemoryShapes 问题

Python cvNet.forward()错误(-215:断言失败)输入。大小()==函数';cv::dnn::dnn4_v20200609::数据层::getMemoryShapes 问题,python,tensorflow,opencv,Python,Tensorflow,Opencv,我们在我的公司使用Tensorflow来生成目标检测模型。我个人不知道TF是如何工作的:我只得到机器学习工程师制作的.pb和.pbtxt文件。但是,我希望使用这些TF输出(打印边界框等)将给定图像上的结果可视化 我无法在代码中运行cv.dnn.readNetFromTensorflow(pb\u文件,pbtxt\u文件)命令,以便在图像上应用模型。完全错误是: cv2.error:OpenCV(4.4.0)C:\Users\appveyor\AppData\Local\Temp\1\pip-re

我们在我的公司使用Tensorflow来生成目标检测模型。我个人不知道TF是如何工作的:我只得到机器学习工程师制作的
.pb
.pbtxt
文件。但是,我希望使用这些TF输出(打印边界框等)将给定图像上的结果可视化

我无法在代码中运行
cv.dnn.readNetFromTensorflow(pb\u文件,pbtxt\u文件)
命令,以便在图像上应用模型。完全错误是:

cv2.error:OpenCV(4.4.0)C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\OpenCV\modules\dnn\src\dnn.cpp:784:error:(-215:断言失败)输入。size()==函数'cv::dnn::dnn4\u v20200609::DataLayer::getMemoryShapes'中的requiredoutput

我读过好几篇文章,但从来没有找到解决我问题的方法

python脚本 此脚本来自:


嗨,我也面临着同样的问题。我查阅了OpenCV文档,但找不到开始调试的好参考。你找到解决办法了吗?你好!还是没能成功。我直接使用了tensorflow。谢谢你提供的信息。嗨,我也面临同样的问题。我查阅了OpenCV文档,但找不到开始调试的好参考。你找到解决办法了吗?你好!还是没能成功。我直接用了tensorflow。谢谢你提供的信息。
import cv2 as cv
import os

# Load a model imported from Tensorflow
pb_file = 'C/.../model.pb'
pbtxt_file = pb_file[0:-2]+'pbtxt'
img_file = 'C/.../.png' # also tried jpg but did not work

cvNet = cv.dnn.readNetFromTensorflow(pb_file, pbtxt_file)

img = cv.imread(img_file)
rows = img.shape[0]
cols = img.shape[1]
cvNet.setInput(cv.dnn.blobFromImage(img, size=(300, 300), swapRB=True, crop=False))
cvOut = cvNet.forward() # <---------- location of error

for detection in cvOut[0,0,:,:]:
    score = float(detection[2])
    if score > 0.3:
        left = detection[3] * cols
        top = detection[4] * rows
        right = detection[5] * cols
        bottom = detection[6] * rows
        cv.rectangle(img, (int(left), int(top)), (int(right), int(bottom)), (23, 230, 210), thickness=2)

cv.imshow('img', img)
cv.waitKey()
[ERROR:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\modules\dnn\src\dnn.cpp (3444) cv::dnn::dnn4_v20200609::Net::Impl::getLayerShapesRecursively OPENCV/DNN: []:(_input): getMemoryShapes() throws exception. inputs=1 outputs=0/0 blobs=0
[ERROR:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\modules\dnn\src\dnn.cpp (3447) cv::dnn::dnn4_v20200609::Net::Impl::getLayerShapesRecursively     input[0] = [ 1 3 300 300 ]

[ERROR:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\modules\dnn\src\dnn.cpp (3457) cv::dnn::dnn4_v20200609::Net::Impl::getLayerShapesRecursively Exception message: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\modules\dnn\src\dnn.cpp:784: error: (-215:Assertion failed) inputs.size() 
== requiredOutputs in function 'cv::dnn::dnn4_v20200609::DataLayer::getMemoryShapes'

Traceback (most recent call last):
  File "<input>", line 1, in <module>
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\modules\dnn\src\dnn.cpp:784: error: (-215:Assertion failed) inputs.size() == requiredOutputs in function 'cv::dnn::dnn4_v20200609::DataLayer::getMemoryShapes'