【问题标题】:Why do I get this cv2.error when I set the net.forward output?为什么在设置 net.forward 输出时会出现此 cv2.error?
【发布时间】:2021-05-01 16:57:12
【问题描述】:

我正在使用 cv2 进行一些机器学习对象检测,但总是收到 cv2.error:

OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\dnn\src\layers\convolution_layer.cpp:1114: error: (-215:Assertion failed) inputs[0].size[ 1] % blobs[0].size[1] == 0 in function 'cv::dnn::ConvolutionLayerImpl::forward'

net = cv2.dnn.readNet("yolov3.weights","yolov3.cfg")

layer_names = net.getLayerNames()
output_layers = [layer_names[i[0]-1] for i in net.getUnconnectedOutLayers()]

img = op('null1').numpyArray(delayed=True)
#print(img.dtype)#float32

gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
gray = (gray *255).astype(np.uint8)
#print(gray.dtype)#uint8

blob = cv2.dnn.blobFromImage(img,1/255,(416,416),(0,0,0),swapRB=True,crop=False)

net.setInput(blob)

out = net.forward(output_layers)#!!! HERE OCCURS MY ERROR

有人建议导致此错误的原因是什么? 我必须更改像素格式吗?

【问题讨论】:

  • 什么是 OpenCV 版本?
  • 打开简历 3.2 版

标签: python-3.x opencv machine-learning computer-vision yolo


【解决方案1】:

您应该将1/255 更改为1.0/255,这样它就不会为零。

我也觉得这条​​线应该是这样的

output_layers=[]
for i in net.getUnconnectedOutLayers():
    output_layers.append(layer_names[i[0]-1])

【讨论】:

  • 感谢您的回复,但实际上我得到了同样的错误:/
【解决方案2】:
outputNames = [layerNames[i[0] - 1] for i in net.getUnconnectedOutLayers()]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多