OpenCV 2.4.11 + CUDA 9.1 + Ubuntu 16.04 配置记录

目前手上有一个工作,需要在Ubuntu 16.04 上自行编译OpenCV 2.4,并且还要用CUDA 9。尝试了一下午,终于能够编译通了,这里记录一下。

下载源码

在OpenCV 3.0.0之前的版本,与opencv_contrib对应的包为opencv_extra,体积还是非常大的,注意提前下载好。

配置CUDA

由于OpenCV 2.4 对CUDA 9不直接支持,所以需要对CMake的指令和OpenCV源码本身做一些修正。

对CMake的修正主要参考下术博客,从这个博客又可以链接到另外两个页面。
https://davidstutz.de/compiling-opencv-2-4-x-with-cuda-9/
https://github.com/davidstutz/opencv-2.4-cuda-9-patch/blob/master/cmake/OpenCVDetectCUDA.cmake
https://stackoverflow.com/questions/46584000/cmake-error-variables-are-set-to-notfound

值得注意的是,我并没有覆盖OpenCVDetectCUDA.cmake文件。

即使通过上述配置过程,opencv_extra中,仍然有两个包没有通过配置,但是这两个都是sample包,我就直接把它们删除了。它们是gpu_demos_pack和learning_opencv_v2。

解决nppiGraphcut

编译OpenCV过程中,出现了找不到NppiGraphcutState一类的错误,经过google查询,也是由于CUDA版本造成的不兼容,参考这里进行了修正
https://rohanrajblogs.blogspot.com/2016/12/installation-of-opencv-2411-along-with.html
http://answers.opencv.org/question/95148/cudalegacy-not-compile-nppigraphcut-missing/

修正pkg-config文件

经过上述修正,OpenCV 2.4.11可以正常编译了。但经过install后,得到的pkg-config文件内有对library错误的描述。假设我们使用默认安装位置/usr/local,那么在文件/usr/local/lib/pkgconfig/opencv.pc中,将

Libs: -L${exec_prefix}/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -lcufft -lnpps -lnppitc -lnppisu -lnppist -lnppim -lnppig -lnppif -lnppidei -lnppicom -lnppicc -lnppial -lnppc -lcudart -lrt -lpthread -lm -ldl

中-lcufft -lnpps -lnppitc -lnppisu -lnppist -lnppim -lnppig -lnppif -lnppidei -lnppicom -lnppicc -lnppial -lnppc -lcudart全部删除。

使用CMake配置使用OpenCV的项目时是否需要对/usr/local/share/OpenCV内的文件修正,目前还未测试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值