Ubuntu下部署opencv到工程里

一、背景

        在项目中希望工程能快速地移植到他人的电脑里而不用手动安装配置opencv环境。所以我们需要把opencv放入工程里。

        在这里,我第一时间想的就是使用opencv编译静态库:

cmake -D CMAKE_BUILD_TYPE=RELEASE .. \
      -D CMAKE_INSTALL_PREFIX=install \
      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.0/modules \
      -D OPENCV_GENERATE_PKGCONFIG=ON \
      -D BUILD_SHARED_LIBS=NO \
      ..

        编译完后,我发现静态库太多,一个一个链接入工程太麻烦,于是我在编译的时候又加入了  -D BUILD_opencv_world=ON  ,这样所有库都会被整合起来。

        但问题也随之而来,在调用这个库时,工程报错了,原因是找不到对应的库文件。查了一番后,发现虽然库文件都被整合起来了,但这个整合起来的静态库文件里没有调用那些库文件的参数。

        在思考一番后,我想既然静态库不行,我用动态库可不可以。

        一般工程里使用opencv是在CMakeLists.txt文件里利用 find_package(OpenCV REQUIRED) 去找到opencv安装目录里的四个.cmake文件,再通过这些文件找到对应配置的opencv文件。这样只要在CMakeLists.txt里设置.cmake文件的查找路径,再写个自动给配置文件添加lib库文件路径的.sh文件。

具体步骤如下:

二、opencv部署

opencv版本4.5.0

1.安装环境依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

第三行可选择是否安装依赖

2.下载源码

opencv https://opencv.org/releases/

opencv_contrib https://github.com/opencv/opencv_contrib/tree/4.5.0

将opencv_contrib放到opencv文件夹 

3.编译

新建build.sh文件,写入:

#!/bin/bash
 
if [[ ! -d build ]]; then
 mkdir build
fi
 
cd build
rm -rf *
 
cmake -D CMAKE_BUILD_TYPE=RELEASE .. \
      -D CMAKE_INSTALL_PREFIX=install \
      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.0/modules \
      -D OPENCV_ENABLE_NONFREE=ON \
      -D BUILD_opencv_python2=OFF \
      -D BUILD_opencv_python3=OFF \
      -D OPENCV_GENERATE_PKGCONFIG=ON \
      -D BUILD_opencv_java=OFF \
      -D BUILD_opencv_world=ON \
      -D BUILD_OPENEXR=ON \
      -D BUILD_JAVA=OFF \
      -D BUILD_ANDROID_EXAMPLES=OFF \
      -D WITH_OPENCL=OFF \
      -D WITH_IPP=OFF \
      -D WITH_TBB=OFF \
      -D BUILD_EXAMPLES=OFF \
      -D BUILD_TESTS=OFF \
      -D BUILD_PERF_TESTS=OFF \
      -D BUILD_DOCS=OFF \
      ..
 
make -j4
 
make install

可以根据需要增删各个启用参数

4.部署

         编译成功后获得一个install文件夹,把文件夹里的lib文件夹和Include文件夹复制到工程文件里。在CMakeLists.txt文件里添加:

# find opencv
set(OpenCV_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/cmake/opencv4)
find_package(OpenCV 4.5.0 REQUIRED)
include_directories(./include/opencv4)
target_link_libraries(这里写你设置的工程名 PUBLIC
    ${OpenCV_LIBS}
)

新建一个EnvironmentalConfiguration.sh:

#!/bin/bash
sudo -s <<EOF
cd ./lib
DIR=$(cd $(dirname $0) && pwd )
cd /etc/ld.so.conf.d/
if [ -d "./opencv.conf" ]; then
    touch opencv.conf
fi
echo $DIR >> opencv.conf
ldconfig
EOF

这个将opencv库文件路径加入配置,以防万一配置没启用,EnvironmentalConfiguration.sh文件运行后重启一次电脑。

        这样只要将工程文件夹整个打包发给别人,解压后运行EnvironmentalConfiguration.sh,就可以使用opencv了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值