文章目录
- [1.opencv_contrib-3.4.10 & opencv-3.4.10下载](#1.opencv_contrib-3.4.10 & opencv-3.4.10下载)
- 2.安装必备依赖项
- [3. 编译OpenCV](#3. 编译OpenCV)
- 4.编译并安装
- 5.验证安装
1.opencv_contrib-3.4.10 & opencv-3.4.10下载
下载
opencv_contrib-3.4.10 放在 opencv-3.4.10 目录下
bash
virtual-machine:/opt/opencv-3.4.10$ ls
3rdparty cmake data LICENSE platforms
apps CMakeLists.txt doc modules README.md
build CONTRIBUTING.md include opencv_contrib-3.4.10 samples
2.安装必备依赖项
bash
sudo apt update
sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
gfortran openexr libatlas-base-dev python3-dev python3-numpy \
libtbb2 libtbb-dev libdc1394-22-dev
3. 编译OpenCV
以下是cmake
命令中各个参数的中文解析:
bash
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/opt/opencv-3.4.10/opencv_contrib-3.4.10/modules \
-D WITH_CUDA=OFF \
-D BUILD_EXAMPLES=ON ..
-
-D CMAKE_BUILD_TYPE=Release
- 指定构建类型为"Release"(发布版),这样会启用优化选项,使得编译后的OpenCV库在性能上更佳。
-
-D CMAKE_INSTALL_PREFIX=/usr/local
- 指定安装路径为
/usr/local
,即编译安装后的OpenCV库和头文件将被安装到/usr/local
目录下。
- 指定安装路径为
-
-D OPENCV_EXTRA_MODULES_PATH=/opt/opencv-3.4.10/opencv_contrib-3.4.10/modules
- 指定OpenCV的额外模块路径,这个参数告诉
cmake
去加载opencv_contrib
模块的路径,也就是/opt/opencv-3.4.10/opencv_contrib-3.4.10/modules
,以便包含并编译额外的模块。
- 指定OpenCV的额外模块路径,这个参数告诉
-
-D WITH_CUDA=OFF
- 指定不使用CUDA加速。设置为
OFF
表示在编译OpenCV时不启用对CUDA(用于GPU加速)的支持。
- 指定不使用CUDA加速。设置为
-
-D BUILD_EXAMPLES=ON
- 指定编译OpenCV的示例代码。设置为
ON
表示在构建过程中会编译OpenCV附带的示例程序,方便后续学习和测试。
- 指定编译OpenCV的示例代码。设置为
-
..
- 表示CMake将使用上一级目录(即OpenCV的源代码目录)中的
CMakeLists.txt
文件来生成构建配置文件。
- 表示CMake将使用上一级目录(即OpenCV的源代码目录)中的
通过这个命令,CMake将使用Release模式进行编译,将编译后的文件安装到/usr/local
目录,并且包含了opencv_contrib
模块,同时不启用CUDA加速并编译OpenCV示例代码。
4.编译并安装
bash
make -j$(nproc)
sudo make install
sudo ldconfig
以下是对这三个命令和参数的详细解析:
a. make -j$(nproc)
make
:用于编译项目,根据Makefile
中定义的规则将源代码编译成可执行文件。-j$(nproc)
:指定并行编译的线程数量。-j
:表示开启多线程编译,以加快编译速度。$(nproc)
:返回当前系统中可用的CPU核心数。在Linux系统中,nproc
命令会输出CPU核心的数量,因此这个参数会将编译进程数设置为与可用核心数相同,充分利用CPU资源。
b. sudo make install
sudo
:以超级用户(root)权限执行命令,因为安装需要对系统目录进行写操作。make install
:执行Makefile
中的安装指令,将已编译的文件复制到指定的系统目录(例如:/usr/local
),以便在系统中全局使用。
c. sudo ldconfig
ldconfig
:用于更新动态链接库的缓存文件,确保系统可以找到新安装的库文件。- 在安装OpenCV后,新的库文件会被放入系统目录(如
/usr/local/lib
)。ldconfig
会扫描这些目录并更新缓存文件,确保系统可以正确链接到这些库。
- 在安装OpenCV后,新的库文件会被放入系统目录(如
c.总结
make -j$(nproc)
: 并行编译,充分利用多核CPU资源,提高编译速度。sudo make install
: 将编译完成的文件安装到系统目录。sudo ldconfig
: 更新动态链接库缓存,确保系统能够识别和使用新安装的库。
5.验证安装
bash
pkg-config --modversion opencv
这应该输出3.4.10,表示OpenCV已经成功安装。如果你有多个OpenCV版本,可能需要调整路径配置,以确保使用的版本正确。