使用Yolov3时python的Open-Cv dnn错误。使用open-cv ver(4.2.0)

时间:2020-05-23 08:21:57

标签: python opencv yolo

cv2.error:OpenCV(4.2.0)C:\ projects \ opencv-python \ opencv \ modules \ dnn \ src \ darknet \ darknet_io.cpp:677:错误:(-212:分析错误)未知图层类型:在函数'cv :: dnn :: darknet :: ReadDarknetFromCfgStream

代码:


import cv2
import numpy as np

# Load Yolo
path =r"D:\yolov3-coco"
weight = path+r"\yolov3.weights"
cfg = path+r"\yolov3.cfg"
net = cv2.dnn.readNetFromDarknet(weight ,cfg )
classes = []
with open(path+"\coco.txt", "r") as f:
    classes = [line.strip() for line in f.readlines()]
print(cfg)
print(weight)
print(classes)



cv2.destroyAllWindows()

我已经使用了命令net= cv2.dnn.readNet(weights,cfg),但是它没有用,我还去了https://pjreddie.com/media/files/yolov3.weights,下载了权重和配置文件,并将它们放在名为yolov3-coco的文件夹中。 >

4 个答案:

答案 0 :(得分:0)

也许yolo3-coco cfg和重量不匹配,所以未知图层类型错误。

答案 1 :(得分:0)

您似乎先通过*.weights,然后再经过*.cfg。如果首先使用*.cfg,则使用深色网weights文件。 readNetFromDarknet的参考,

https://docs.opencv.org/master/d6/d0f/group__dnn.html#gafde362956af949cce087f3f25c6aff0d

此问题类似于

YOLO V3 Video Stream Object Detection

答案 2 :(得分:0)

yolov3.weights,yolov3.cfg 的路径不正确,所以你可以直接在它们存储的地方传递路径

net = cv.dnn.readNetFromDarknet("yolov3-coco/yolov3.cfg", "yolov3-coco/yolov3.weights")

答案 3 :(得分:0)

对我来说这是错误的文件。我在 google colab 中尝试使用 tensorflow 2.5.0 版。以下文件有效:

!wget "https://pjreddie.com/media/files/yolov3.weights"

!wget "https://raw.githubusercontent.com/pjreddie/darknet/master/cfg/yolov3.cfg"

!wget "https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names"

相关问题