CVLIB Mac环境下detect_common_objects函数输出为空的解决办法

CVLIB Mac环境下detect_common_objects函数输出为空的解决办法

第一次接触CBLIB,使用的过程中可谓是一波三折,下面就记录一下我遇到的一些问题,希望对同样遇到这类问题的小伙伴所帮助。

安装CVLIB

anaconda环境下安装CVLIB需要先安装OpenCV、TensorFlow。

一、安装OpenCV
在anaconda下,用terminal打开base环境,使用conda install OpenCV。
安装过程中会出现一直Solving environment,按照网上教程conda update -n base conda下载更新后conda update --all可以解决。

二、安装TensorFlow
conda install tensorflow

三、安装cvlib
pip install cvlib
安装好以上之后才发现麻烦才刚刚开始,崩溃了两天。照着GitHub上官方教程正常使用人脸检测(cv.detect_face(image))、性别检测(cv.detect_gender(face, enable_gpu=True))都没问题,唯独物体检测(detect_common_objects(img))这个函数一直输出为空。
翻看GitHub上问题反馈区域发现国外同样有很多人遇到过这个问题,Mac下输出为空,但是Windows上一些正常。

根据安装时提示的路径找到cvlib的安装文件夹/Users/XXXX/opt/anaconda3/lib/python3.7/site-packages/cvlib
打开物体检测的源码。
在这里插入图片描述

然后会发现源码里需要下载一个支持文件yolov3
在这里插入图片描述

接下就好办了,应为人脸检测和性别识别都不要另外的文件支持,直觉告诉我一定是这个文件出了问题,下面直接找出这个文件的路径。
摘录两段源码里的代码

// 
dest_dir = os.path.expanduser('~') + os.path.sep + '.cvlib' + os.path.sep + 'object_detection' + os.path.sep + 'yolo' + os.path.sep + 'yolov3'

def detect_common_objects(image, confidence=0.5, nms_thresh=0.3, model='yolov3', enable_gpu=False):

    Height, Width = image.shape[:2]
    scale = 0.00392

    global classes
    global dest_dir

    if model == 'yolov3-tiny':
        config_file_name = 'yolov3-tiny.cfg'
        cfg_url = "https://github.com/pjreddie/darknet/raw/master/cfg/yolov3-tiny.cfg"
        weights_file_name = 'yolov3-tiny.weights'
        weights_url = 'https://pjreddie.com/media/files/yolov3-tiny.weights'
        blob = cv2.dnn.blobFromImage(image, scale, (416,416), (0,0,0), True, crop=False)


    else:
        config_file_name = 'yolov3.cfg'
        cfg_url = 'https://github.com/arunponnusamy/object-detection-opencv/raw/master/yolov3.cfg'
        weights_file_name = 'yolov3.weights'
        weights_url = 'https://pjreddie.com/media/files/yolov3.weights'
        blob = cv2.dnn.blobFromImage(image, scale, (416,416), (0,0,0), True, crop=False)    

    config_file_abs_path = dest_dir + os.path.sep + config_file_name
    weights_file_abs_path = dest_dir + os.path.sep + weights_file_name    
    

这里发现两个文件的路径为

os.path.expanduser('~') + os.path.sep + '.cvlib' + os.path.sep + 'object_detection' + os.path.sep + 'yolo' + os.path.sep + 'yolov3'

不妨在terminal中输入Python3.7打开Python3.7环境
输入import os,导入os模块
然后再输入上面路径生成代码
在这里插入图片描述

然后可以得到这个文件路径。由于这里有一个隐藏文件夹名.cvlib。原来问题就出在这里了。y使用shift+command+g打开这个隐藏文件夹,会发现ylov3这个文件大小远比GitHub上连接直接下载小。
官网上有说明,在首次运行detect_common_objects(img)这个函数时会下载支持文件yolov3,这里应该是下载的时候没有下载完全,到时后面运行时函数输出为空。然后从GitHub上下载所需的这两个文件。

在这里插入图片描述
果然问题解决了。
附带两张程序运行完的效果图在这里插入图片描述

在这里插入图片描述

检测效果还是很不错滴。

参考
[1]:https://github.com/arunponnusamy/cvlib

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值