在ubuntu16.04中使用另一个版本的opencv(3.1)

本文详细介绍如何在cmakelists.txt中配置OpenCV库,包括设置路径、链接库及解决CUDA兼容性问题等,确保项目顺利编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在安装好opencv后,需要在你程序的cmakelists.txt 文件中加入下面几行:

set(OpenCV_DIR "/home/xxxx/soft-ware/opencv-3.1.0/build")
project(yolo_gpu)
FIND_PACKAGE(OpenCV REQUIRED)
SET(CMAKE_CXX_COMPILER "g++")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++11 -fPIC")
MESSAGE(STATUS "OpenCV library status:")
MESSAGE(STATUS "version: ${OpenCV_VERSION}")
MESSAGE(STATUS "libraries: ${OpenCV_LIBS}")
MESSAGE(STATUS "include path: ${OpenCV_INCLUDE_DIRS}")

INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

SET(LIBRARY_NEED_OPENCV_PATH "/home/xxx/soft-ware/opencv-3.1.0/build/lib")

TARGET_LINK_LIBRARIES(yolo_gpu
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_calib3d.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_core.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_features2d.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_flann.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_highgui.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_imgcodecs.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_imgproc.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_ml.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_objdetect.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_photo.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_shape.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_stitching.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_superres.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_ts.a
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_video.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_videoio.so
                     ${LIBRARY_NEED_OPENCV_PATH}/libopencv_videostab.so
          )

添加上自己需要的动态或者静态库文件。

opencv3.1的安装,不安装在系统里面
cd 到解压后的opencv-3.1.0
mkdir build
cd build

sudo apt-get install libqt4-dev libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

复制ippicv_linux_20151201到~/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/

再次cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
/*
在执行编译make -j4或make -j8之前
由于CUDA 8.0不支持OpenCV的 GraphCut 算法,可能出现以下错误:
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
typedef NppStatus (init_func_t)(NppiSize oSize, NppiGraphcutState* ppStat
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type
operator NppiGraphcutState*()
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type
NppiGraphcutState* pState;
…….

进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:

#include "precomp.hpp"  
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)  

修改为

#include "precomp.hpp"  
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)  

*/
make -j4或make -j8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城墙郭外斜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值