OpenCV_4.2.0/README.md

79 lines
2.9 KiB
Markdown
Raw Normal View History

2024-07-25 16:55:25 +08:00
# 在ROS中重新编译和配置OpenCV 4.2版本
## 背景问题
1. GTK的依赖与ORB中的GTK依赖有冲突。
2. 如果需要新增加模块且不希望系统中有多份OpenCV可以按照以下方法重新编译OpenCV并重置系统中的OpenCV。
## 步骤
### 1. 下载OpenCV源码和OpenCV-contrib源码
- OpenCV: [opencv 4.2.0](https://opencv.org/blog/opencv-4-2-0/) 或者 [GitHub](https://github.com/opencv/opencv/releases/tag/4.2.0)
- OpenCV-contrib: [GitHub](https://github.com/opencv/opencv_contrib/releases/tag/4.2.0)
### 2. 编译OpenCV和contrib库
推荐安装cmake-gui:
```sh
sudo apt-get install cmake-gui
```
#### 2.1 更改`opencv/3rdparty/carotene/CMakeList.txt`
将以下内容添加到文件中:
```cmake
set_source_files_properties(${carotene_sources} COMPILE_FLAGS "--param ipa-cp-unit-growth=100000 --param inline-unit-growth=100000 --param large-stack-frame-growth=5000")
```
#### 2.2 配置CMake编译选项
选择安装模块和安装路径,注意路径不要设置为系统路径,后面会手动拷贝到系统目录中:
```sh
2024-07-25 18:18:45 +08:00
cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules-4.2.0/modules \
2024-07-25 16:55:25 +08:00
-DWITH_CUDA=ON \
-DOPENCV_GENERATE_PKGCONFIG=TRUE \
-DCMAKE_INSTALL_PREFIX=/home/autolabor/ThirdParty/opencv-build \
-DBUILD_TESTS=OFF \
-DBUILD_opencv_sfm=OFF ..
```
2024-07-25 18:18:45 +08:00
或者通过cmake-gui选择这些编译选项
2024-07-25 16:55:25 +08:00
#### 2.3 编译和安装
```sh
sudo make install -j8
```
### 3. 覆盖系统OpenCV库
2024-07-25 18:18:45 +08:00
#### 3.1 拷贝文件夹内容
2024-07-25 16:55:25 +08:00
分别将右侧的`bin`、`include`、`lib`、`share`中的内容拷贝到:
- `/build/bin` -> `/usr/bin`
- `/build/include/opencv4` -> `/usr/include/opencv4`
- `/build/share/opencv4` -> `/usr/share/opencv4`
- `/build/lib/*.4.2.0` -> `/usr/lib/aarch64-linux-gnu/`
2024-07-25 18:18:45 +08:00
#### 3.2 创建软链接脚本
编译完成后会出现几个文件夹,创建一个软链接的脚本,脚本内容如下:
2024-07-25 16:55:25 +08:00
拷贝完成后,执行`create_link.sh`脚本添加so库的链接 `*.so -> *.so.4.2`, `*.so.4.2 -> *.so.4.2.0`
#### 3.3 配置pkgconfig
将`/build/lib/pkgconfig/opencv4.pc` 拷贝到 `/usr/lib/aarch64-linux-gnu/pkgconfig`中。
这样使用`pkg-config --modversion opencv4`就可以看到4.2.0的输出了。
#### 3.4 配置CMake文件
将`/build/lib/cmake/opencv4/*.cmake` 拷贝到 `/usr/lib/aarch64-linux-gnu/cmake/opencv4/`中。
修改`OpenCVConfig.cmake`文件,将`OpenCV_INSTALL_PATH`目录多添加一层`../`,即指向`/usr`。
修改`OpenCVModules-release.cmake`文件,将所有的`/lib/`替换为`/aarch64-linux-gnu/`。
这样就完成了CMake的配置在调用`find_package(OpenCV)`时会调用这几个CMake文件。
#### 3.5 配置Python
将`/build/lib/python3.8/dist-package/cv2/python3.8`中的`*.so`拷贝到
`/usr/lib/python3.8/dist-package/cv2/python3.8`中。
同样将Python2.7的上述路径进行覆盖。
此时就可以在Python中调用`import cv2`了。