使用Cmakelist 对 Opencv不同的版本切换和管理 & Linux Opencv C++安装记录(2024.0506 更)
如何使用Cmakelist 来对不同版本的库(以opencv的不同版本为例)进行版本切换和管理
Ubuntu 18.04 使用Cmakelist 对 Opencv不同的版本切换和管理
我们在运行程序的时候,经常在跑不同的代码,需要不同的Opencv 版本,那么我们应该在运行代码的时候,指定你使用哪个opencv来进行编译和运行的,我这里以opencv 3. 2 和oepncv 3.3 为例来进行说明:
首先 你需要对2个版本的opencv 进行安装,在网上下载源码之后,便可以进行编译了:
*
首先建立2个文件夹分别放置你安装opencv的路径
cd ~
mkdir otherpackage
cd ~/otherpackage
mkdir opencv3.2
mkdir opencv 3.3
现在对于你下载的源码进行安装。opencv 的安装进行有依赖环境,这个网上很多,读者可以自行查看。
现在开始安装opencv3.2
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_PERF_TESTS=OFF -D WITH_CUDA=OFF -D WITH_IPP=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_INSTALL_PREFIX=/home/miao/otherpackage/opencv3.2 ..
make -j4
sudo make install
cmake … 和make 命令执行时间都比较长,cmake 执行的时候可能会下载一个包导致时间的浪费,等一回就好了。或者手动下载ippicv并且把他放到opencv-3.2.0/3rdparty/ippicv/downloads/目录下。我将openccv 3.2 安装在了/home/miao/otherpackage/opencv3.2 路径下面。
继续安装opencv3.3 步骤和上面的一样:
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_PERF_TESTS=OFF CMAKE_INSTALL_PREFIX=/home/miao/otherpackage/opencv3.3 ..
make -j4
sudo make install
我将openccv 3.3安装在了/home/miao/otherpackage/opencv3.3 路径下面。
现在为止,你的电脑上面应该安装有2个opencv 的文件夹了。
我的电脑上面有有3个安装包,你可以忽略这一点。
这时候,你点进去会发现你安装的文件夹都上了锁,你需要修改对他们的权限
sudo chmod -R 777 opencv3.2
sudo chmod -R 777 opencv3.3
然后进入
cd /home/miao/otherpackage/opencv3.2/share/OpenCV
然后你发现了一个文件OpenCVConfig.cmake 这就是存放我们opencv 头文件和库文件路径的文件。一会指定不同的版本,就是指定我们不同opencv对应的这个文件的路径而已。
opencv 已经安装成功,之前下载的软件包也可以删除了。
编写Cmakelist 文件
在你的project 命令前面加上set 的指令
如果你想使用opencv 3.3 :
set(OpenCV_DIR "/home/miao/otherpackage/opencv3.3/share/OpenCV" ) # 你的opencv 3.3安装的OpenCVConfig.cmake路径
project(Test)
如果你想使用opencv 3.2 :
set(OpenCV_DIR "/home/miao/otherpackage/opencv3.2/share/OpenCV" ) # 你的opencv3.2 安装的OpenCVConfig.cmake路径
project(Test)
如果你想验证你用的是哪个opencv库:
message(STATUS ${OpenCV_INCLUDE_DIRS}) # 将对于调用的opencv的头文件的地址打印出来
C++ OpenCV 的安装笔记(20240506 OpenCV 4.x 版本的)
安装的官网链接: https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html
现在的Opencv 好像已经很简单可以安装了,不需要你提前装很多依赖包。
- 下载 Source 源文件包:
https://github.com/opencv/opencv/archive/4.x.zip
unzip opencv.zip
# Create build directory
mkdir -p build && cd build
make -j8
sudo make install
## 快速查看当前 ubuntu 的 opencv 的版本
opencv_version
编译的过程当中,需要手动下载在 ippicv 的安装包 和 ade 的安装包.
Ippcv 可以 在cmake 的时候设置 -DWITH_IPP=OFF 不用去下载 Ippcv 的文件包。
ADE 包还是需要手动下载,并且需要修改对应的 DownloadADE.cmake 文件:
在Cmake 文件里 OpenCV 框架中提供的 ocv_download 函数,但是我们的机器无法翻墙的,所以需要手动下载。
修改 DownloadADE.cmke 下面的代码,按照下面的方式:
# 检查文件是否已在预期目录中, 我下载好的文件的路径
set(ade_zip_file "/home/smiao/GaussianPro/opencv-4.x/.cache/ade/ade-0.1.2d.zip")
if(EXISTS "${ade_zip_file}")
message(STATUS "ADE zip file found in cache: ${ade_zip_file}")
# 直接设置文件路径而无需下载
set(ade_filename ${ade_zip_file})
# 检查是否已解压
set(ade_unpacked_dir "/home/smiao/GaussianPro/opencv-4.x/.cache/ade/unpacked")
if(NOT EXISTS "${ade_unpacked_dir}")
message(STATUS "Unpacking ADE zip file...")
# 解压文件到指定目录
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xzf ${ade_zip_file}
WORKING_DIRECTORY ${ade_src_dir}
)
else()
message(STATUS "ADE is already unpacked in ${ade_unpacked_dir}")
endif()
else()
# 如果文件不在缓存中,则使用原来的下载逻辑
ocv_download(
FILENAME ${ade_filename}
HASH ${ade_md5}
URL
"${OPENCV_ADE_URL}"
"$ENV{OPENCV_ADE_URL}"
"https://github.com/opencv/ade/archive/"
DESTINATION_DIR ${ade_src_dir}
ID ADE
STATUS res
UNPACK RELATIVE_URL
)
endif()
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)