ubuntu18.04+caffe-ssd+cuda9.2+cudnn7.3.1+opencv4.0.0α编译

    前言:鉴于caffe比较久远了(github上有两年没有更新版本了),所以基础教程这边就不多赘述了,可以自己搜一搜,csdn全站应该也有不少基础版本的教程了。然后我也是一次偶然的机会去接触最新发布的 opencv4α 版本(主要是自己太作了,想编译一个gpu版本的opencv去跑一下解码,结果并没有成功,然后索性系统也升级到ubuntu18.04了,换来换去最后就换到了最新版本的opencv4了),既然opencv编不出gpu解码(RTSP+GPU),那就不用了。
    当然,同时就是caffe也崩了。

下面进入正题。
    我使用的是cmake来编译caffe,推荐装个cmake-gui,方便查看编译选项,我在cmake里面增加了一个 USE_OPENCV_FOUR 的编译选项,本来以为caffe里面应该有加关于opencv版本的编译选项,但是,由于实在太久了,只有opencv2和3的差别,并没有考虑到后面的。
    所以需要自己手动加,另外需要在 $(CAFFE_ROOT)/cmake/Dependencies.cmake 这个文件里面找到80行这里,加上


    if(USE_OPENCV_FOUR)
        add_definitions(-DUSE_OPENCV_FOUR)
    endif()


这里做的是加上这个宏应用到代码中($(CAFFE_ROOT)是你caffe安装的目录)。我是这么干的。然后对应项目源码文件中有不适用的宏(比如CV_开头的有些宏是变化了的,也有可能是换了个头文件,一般这种都是C的宏,所以可以看看opencv里面的XXX_c.h里面是不是有定义,如果有就直接加头文件),也有部分函数名称发生了变化,推荐去用《XXX实战caffe》书里面提到的  grep -R -H -n "你要搜索的内容"  看一下具体在哪个头文件里面有相关函数,我一般搜索的时候搜函数名主体,比如cvScalar,就搜Scalar,然后你就会发现在imgproc.hpp第4344行定义了一个宏  #define CV_RGB(r, g, b) cv::Scalar((b), (g), (r), 0)  说明这个函数已经更名为 cv::Scalar 了,那就给编译出错的文件中加这么一个宏  #define cvScalar cv::Scalar  就可以了。
    不过我更加推荐一个一劳永逸的办法,就是通过opencv自带的宏,主版本号去进行判断, CV_MAJOR_VERSION 可以判断是opencv3还是opencv4的(opencv2.x版本用的不是这个宏),比我另外添加一个 USE_OPENCV_FOUR 看起来稍微科学一点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值