关于CV2.dnn.readNetFromDarknet(config_path, weights_path)报错解决方式

最近在用yolo做人脸识别的时候发现使用
CV2.dnn.readNetFromDarknet(config_path, weights_path)
经常会出现错误

cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\dnn\src\darknet\darknet_importer.cpp:207: error: (-212:Parsing error) Failed to parse NetParameter file: ./cfg/yolov3_coco.cfg in function 'cv::dnn::dnn4_v20210608::readNetFromDarknet'

这个错误在网上的解决方案大多都是优化opencv2,但是我是用的pycharm办公,他们优化方案很多都是在linux,MAC以及Ubantu上操作。除此之外还查过的就是更新版本以及写绝对路径值,但都改变不了,源代码片段如下

def yolo_detect(pathIn='',
                pathOut=None,
                label_path='./cfg/coco.names',
                config_path='./cfg/yolov3_coco.cfg',
                weights_path='./cfg/yolov3_coco.weights',
                confidence_thre=0.5,
                nms_thre=0.3,
                jpg_quality=80):
    '''
    pathIn:原始图片的路径
    pathOut:结果图片的路径
    label_path:类别标签文件的路径
    config_path:模型配置文件的路径
    weights_path:模型权重文件的路径
    confidence_thre:0-1,置信度(概率/打分)阈值,即保留概率大于这个值的边界框,默认为0.5
    nms_thre:非极大值抑制的阈值,默认为0.3
    jpg_quality:设定输出图片的质量,范围为0到100,默认为80,越大质量越好
    '''

    # 加载类别标签文件
    LABELS = open(label_path).read().strip().split("\n")
    nclass = len(LABELS)

    # 为每个类别的边界框随机匹配相应颜色
    np.random.seed(42)
    COLORS = np.random.randint(0, 255, size=(nclass, 3), dtype='uint8')

    # 载入图片并获取其维度
    base_path = os.path.basename(pathIn)
    img = cv2.imread(pathIn)
    (H, W) = img.shape[:2]

    # 加载模型配置和权重文件
    print('从硬盘加载YOLO......')
    net = cv2.dnn.readNetFromDarknet(config_path, weights_path)

但是后面无意间发现把

CV2.dnn.readNetFromDarknet(config_path, weights_path)

这一段以及之前的文件路径放在前面就可以解决此问题让文件继续运行,新改的代码片段如下:

print('从硬盘加载YOLO......')
label_path = './cfg/coco.names'
config_path = './cfg/yolov3.cfg'
weights_path = './cfg/yolov3.weights'
net = cv2.dnn.readNetFromDarknet(config_path, weights_path)


def yolo_detect(pathIn='',
                pathOut=None,
                confidence_thre=0.5,
                nms_thre=0.3,
                jpg_quality=80):
    '''
    pathIn:原始图片的路径
    pathOut:结果图片的路径
    label_path:类别标签文件的路径
    config_path:模型配置文件的路径
    weights_path:模型权重文件的路径
    confidence_thre:0-1,置信度(概率/打分)阈值,即保留概率大于这个值的边界框,默认为0.5
    nms_thre:非极大值抑制的阈值,默认为0.3
    jpg_quality:设定输出图片的质量,范围为0到100,默认为80,越大质量越好
    '''

    # 加载类别标签文件
    LABELS = open(label_path).read().strip().split("\n")
    nclass = len(LABELS)

    # 为每个类别的边界框随机匹配相应颜色
    np.random.seed(42)
    COLORS = np.random.randint(0, 255, size=(nclass, 3), dtype='uint8')

    # 载入图片并获取其维度
    base_path = os.path.basename(pathIn)
    img = cv2.imread(pathIn)
    (H, W) = img.shape[:2]

学习期间发布仅供参考哦

版权声明:本文为CSDN博主「垂钓者233」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a1103580557/article/details/120158162

垂钓者233

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

OpenCV之目标检测

前言 案例 Fu Xianjun. All Rights Reserved. 随着当今世界的发展,计算机视觉技术的应用越来越广泛。伴随着硬件设备的不断升级,构造复杂的计算机视觉应用变得越来越容易了。OpenCV像是