Opencv中 preds = net.forward() cv2.error: 引起的‘cv::dnn::dnn4_v20191202::DataLayer::getMemoryShapes‘

Opencv中由 preds = net.forward() cv2.error: 引起的’cv::dnn::dnn4_v20191202::DataLayer::getMemoryShapes’错误

File "E:/python_user/dnn_blob/blob_from_images.py", line 27, in <module>
    preds = net.forward()
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\dnn\src\dnn.cpp:730: error: (-215:Assertion failed) inputs.size() == requiredOutputs in function 'cv::dnn::dnn4_v20191202::DataLayer::getMemoryShapes'

在使用Opencv做一个DNN 的项目中,原码是由Caffe框架编写,然后在此基础上将Caffe转为Tensorflow框架。
部分代码为:

# Caffe所需配置文件
net = cv2.dnn.readNetFromCaffe("bvlc_googlenet.prototxt",
	"bvlc_googlenet.caffemodel")
	...
# 图像数据预处理
image = cv2.imread(imagePaths[0])
resized = cv2.resize(image, (224, 224))
# image scalefactor size mean swapRB 
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
net.setInput(blob)
preds = net.forward()

改为:

net = cv2.dnn.readNetFromTensorflow(model= "best_vgg16.pb",
	config=None)
	...
# 图像数据预处理
image = cv2.imread(imagePaths[0])
resized = cv2.resize(image, (224, 224))
# image scalefactor size mean swapRB 
blob = cv2.dnn.blobFromImage(resized, 1, (224, 224), (104, 117, 123))
#blob = blob.astype(np.float32)
net.setInput(blob)
preds = net.forward()

后续更改适合tensorflow框架的数据类型。
参考链接:
OpenCV DNN(二)——Net

opencv dnn分类网络调用-python版
eltwise_layer.cpp:170: error: (-215:Assertion failed) inputs.size() >= 2 in function 'cv::dnn::Eltwi
opencv 加载tensorflow pb模型
https://stackoverflow.com/questions/65127290/cvnet-forward-error-215assertion-failed-inputs-size-requiredoutputs-i

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenCV DNN(Deep Neural Network)是OpenCV的一个模块,它提供了对深度学习网络的支持。DNN模块可以加载训练好的深度学习模型,并使用它们进行图像分类、物体检测、图像分割和人脸识别等任务。 OpenCV DNN模块支持多种深度学习框架,包括Caffe、TensorFlow、Torch和Darknet等。用户可以选择最适合他们的框架,并使用DNN模块进行深度学习任务。 DNN模块的主要类是dnn::Net类,它表示一个深度学习网络。用户可以使用dnn::Net类加载训练好的模型,然后使用它进行图像处理任务。下面是一个使用OpenCV DNN模块进行图像分类的简单示例: ```python import cv2 # 加载模型 net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'model.caffemodel') # 加载图像 image = cv2.imread('image.jpg') # 缩放图像并减去平均值 blob = cv2.dnn.blobFromImage(cv2.resize(image, (224, 224)), 1.0, (224, 224), (104, 117, 123)) # 将数据输入到模型进行预测 net.setInput(blob) preds = net.forward() # 打印预测结果 print(preds) ``` 这个示例使用了Caffe框架训练的一个图像分类模型,它可以将一张图像分类为1000种不同的物体类别。在示例,我们首先使用cv2.dnn.readNetFromCaffe()函数加载了训练好的模型,然后使用cv2.dnn.blobFromImage()函数将输入图像预处理成模型需要的格式。最后,我们将预处理后的数据输入到模型进行预测,并打印预测结果。 需要注意的是,这只是OpenCV DNN模块的一个简单示例,实际应用需要根据具体情况进行调整和改进。另外,OpenCV DNN模块支持多种深度学习框架,用户可以根据自己的需要选择最适合的框架进行深度学习任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值