使用 Yolov3 时 python 的 Open-Cv dnn 错误。使用 open-cv ver(4.2.0)
Open-Cv dnn error for python while using Yolov3. Using open-cv ver(4.2.0)
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_io.cpp:677: error: (-212:Parsing error) 未知层类型:在函数 '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 的文件夹中。
可能是yolo3-coco cfg和weight不匹配所以未知层类型错误。
您似乎先过了 *.weights
,然后过了 *.cfg
。如果先取*.cfg
,再取暗网weights
文件。 readNetFromDarknet
、
参考
https://docs.opencv.org/master/d6/d0f/group__dnn.html#gafde362956af949cce087f3f25c6aff0d
这个问题类似于,
YOLO V3 Video Stream Object Detection
yolov3.weights、yolov3.cfg 的路径不正确,因此您可以直接在存储它们的地方传递路径
net = cv.dnn.readNetFromDarknet("yolov3-coco/yolov3.cfg", "yolov3-coco/yolov3.weights")
对我来说这是错误的文件。我在 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"
尝试使用OpenCV --version 5
。我的错误就这样解决了。
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_io.cpp:677: error: (-212:Parsing error) 未知层类型:在函数 '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 的文件夹中。
可能是yolo3-coco cfg和weight不匹配所以未知层类型错误。
您似乎先过了 *.weights
,然后过了 *.cfg
。如果先取*.cfg
,再取暗网weights
文件。 readNetFromDarknet
、
https://docs.opencv.org/master/d6/d0f/group__dnn.html#gafde362956af949cce087f3f25c6aff0d
这个问题类似于,
YOLO V3 Video Stream Object Detection
yolov3.weights、yolov3.cfg 的路径不正确,因此您可以直接在存储它们的地方传递路径
net = cv.dnn.readNetFromDarknet("yolov3-coco/yolov3.cfg", "yolov3-coco/yolov3.weights")
对我来说这是错误的文件。我在 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"
尝试使用OpenCV --version 5
。我的错误就这样解决了。