網(wǎng)站主機(jī)空間企業(yè)網(wǎng)站模板html
因項(xiàng)目需要使用不同版本的OpenCV,而本地的Ubuntu22.04系統(tǒng)裝了ROS2自帶OpenCV 4.5.4的版本,于是編譯一個(gè)OpenCV 4.10.0(帶opencv_contrib)版本,給特定的項(xiàng)目使用,這就不用換個(gè)設(shè)備后重新安裝OpenCV 了,直接依賴編譯好的包使用。
PS:如需要直接在系統(tǒng)中安裝OpenCV,可參考:https://blog.csdn.net/qq_45445740/article/details/142770493?spm=1001.2014.3001.5501
目錄
- 1.源碼下載
- 2.環(huán)境準(zhǔn)備
- 3.源碼編譯
- 3.1 創(chuàng)建編譯目錄
- 3.2 配置CMake選項(xiàng)
- 3.2.1 OpenCV的CMake選項(xiàng)說(shuō)明
- 3.2.2 解決編譯過(guò)程中出現(xiàn)下載文件如IPPICV超時(shí)失敗的問(wèn)題
- 3.3 編譯
- 3.4 安裝編譯后的產(chǎn)物
- 3.5 打包編譯后的庫(kù)
1.源碼下載
opencv:https://github.com/opencv/opencv
- 選擇4.10.0 的源碼包進(jìn)行下載
opencv_contrib:https://github.com/opencv/opencv_contrib
- 同樣選擇4.10.0 的源碼包進(jìn)行下載
- 下載好后選擇通過(guò)圖形界面或者unzip命令進(jìn)行解壓,如下圖所示:
2.環(huán)境準(zhǔn)備
安裝依賴
在開(kāi)始之前,需要安裝OpenCV編譯過(guò)程中所需的依賴包??梢酝ㄟ^(guò)以下命令安裝:
sudo apt update
sudo apt install build-essential cmake git pkg-config libjpeg-dev libtiff-dev libpng-dev libjasper-dev libdcmtk-dev
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libgtk-3-dev libcanberra-gtk3-dev libatlas-base-dev gfortran
sudo apt install python3-dev python3-numpy
3.源碼編譯
3.1 創(chuàng)建編譯目錄
在源碼目錄下創(chuàng)建一個(gè)新的構(gòu)建目錄用于編譯:
cd opencv/opencv-4.10.0
mkdir build
cd build
3.2 配置CMake選項(xiàng)
使用CMake配置OpenCV的構(gòu)建選項(xiàng)。需要指定OpenCV contrib模塊的路徑,并啟用需要的功能(如Python綁定等)。
PS:CMAKE_INSTALL_PREFIX
和OPENCV_EXTRA_MODULES_PATH
需要指定編譯后存放的路徑和 contrib模塊的路徑。
cmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/home/xxx/Documents/opencv/opencv-4.10.0/install \-D OPENCV_EXTRA_MODULES_PATH=/home/xxx/Documents/opencv/opencv_contrib-4.10.0/modules \-D BUILD_SHARED_LIBS=ON \-D CMAKE_CXX_STANDARD=11 \-D WITH_WEBP=OFF \-D WITH_JPEG=ON \-D WITH_TIFF=OFF \-D BUILD_EXAMPLES=ON \-D BUILD_PERF_TESTS=OFF \-D BUILD_TESTS=OFF \-D BUILD_opencv_apps=OFF \-D WITH_CUDA=OFF \-D BUILD_JAVA=OFF \-D WITH_FFMPEG=OFF \-D WITH_VTK=OFF \-D OPENCV_ENABLE_NONFREE=ON ..# CMAKE_BUILD_TYPE=Release:編譯類型為Release。
# CMAKE_INSTALL_PREFIX=/opencv/opencv-4.10.0/install:指定安裝目錄。
# OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-4.10.0/modules:指定OpenCV Contrib模塊路徑。
# 其他選項(xiàng)根據(jù)需求啟用或禁用特定功能。
3.2.1 OpenCV的CMake選項(xiàng)說(shuō)明
OpenCV的官方文檔中列出了常見(jiàn)的CMake選項(xiàng),以下是一些常見(jiàn)的構(gòu)建選項(xiàng):
- 基本選項(xiàng)
CMAKE_BUILD_TYPE=Release:選擇編譯類型,通常選擇 Release,但也可以選擇 Debug 進(jìn)行調(diào)試編譯。
CMAKE_INSTALL_PREFIX:指定安裝路徑。
WITH_CUDA=ON/OFF:啟用/禁用CUDA支持(如果你的機(jī)器有NVIDIA顯卡并且你希望加速計(jì)算)。
WITH_OPENCL=ON/OFF:啟用/禁用OpenCL支持。
BUILD_EXAMPLES=ON/OFF:是否編譯OpenCV示例。
BUILD_opencv_python3=ON/OFF:是否構(gòu)建Python 3綁定(如果需要在Python中使用OpenCV)。
BUILD_TESTS=ON/OFF:是否編譯單元測(cè)試。
- Contrib模塊
OPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib/modules:指定Contrib模塊的路徑。
OPENCV_ENABLE_NONFREE=ON/OFF:啟用/禁用一些額外的非免費(fèi)模塊(如SIFT和SURF)。
- 其他常見(jiàn)選項(xiàng)
WITH_FFMPEG=ON/OFF:是否啟用FFmpeg(用于處理視頻文件)。
WITH_GTK=ON/OFF:是否啟用GTK圖形界面(如果你需要GUI應(yīng)用)。
WITH_TBB=ON/OFF:啟用Intel TBB(線程并行)。
WITH_JPEG=ON/OFF:啟用JPEG支持。
WITH_PNG=ON/OFF:啟用PNG支持。
可以通過(guò)查看 CMakeLists.txt 或 OpenCV的官方GitHub倉(cāng)庫(kù)中的文檔來(lái)獲取完整的CMake選項(xiàng)列表。
3.2.2 解決編譯過(guò)程中出現(xiàn)下載文件如IPPICV超時(shí)失敗的問(wèn)題
解決方法:將需要下載的文件提前下好后放在指定的目錄下,并改名。
- 如下圖所示,
boostdesc_binboost_256.i
下載一直卡在這里,通過(guò)編譯過(guò)程中的鏈接,提前將boostdesc_binboost_256.i
文件下載好了放在opencv/opencv-4.10.0/.cache/xfeatures2d/boostdesc
目錄下,并修改為當(dāng)前帶commit命名的文件,刪除原先的文件,重新再執(zhí)行cmake指令。
很不幸,我替換了下面這么多。。。
參考:https://www.cnblogs.com/ZhaoqunZhong/p/16579015.html
3.3 編譯
make -j$(nproc)
# -j$(nproc) 會(huì)讓編譯使用所有可用的CPU核心,以加快編譯速度
3.4 安裝編譯后的產(chǎn)物
編譯完成后,使用以下命令將編譯結(jié)果安裝到指定目錄:
make install
安裝完成后,OpenCV將被安裝到 opencv/opencv-4.10.0/install 目錄下。
3.5 打包編譯后的庫(kù)
將install目錄打包生成壓縮包:libopencv-4.10.0-Linux-x86_64.zip lib
這樣可以將這個(gè)壓縮包拷貝到其他設(shè)備上以便在其他地方使用。