我想在ARM架构的ubuntu20.04下安装opencv3.4.16,C++编译的,如何操作
时间: 2025-07-14 21:35:32 浏览: 19
<think>嗯,用户想在ARM架构的Ubuntu 20.04上安装OpenCV 3.4.16,并且要用于C++编译。首先,我需要回忆一下之前处理类似问题的步骤。根据提供的引用,特别是引用[1]和[2],用户之前尝试过安装不同版本的OpenCV,遇到了一些问题,比如OpenCV4.6.0编译出错,所以选择3.4.16可能更稳定。
首先,安装依赖项是关键。根据引用[3],需要安装一些基础开发工具和库,比如CMake、GCC、Python支持等。可能还需要处理视频I/O的库,比如libavcodec-dev,以及图像处理库如libjpeg-dev。这些依赖项必须正确安装,否则编译会失败。
接下来是获取源码。用户需要从官方或镜像下载OpenCV 3.4.16的源代码和contrib模块,可能因为网络问题,使用镜像源比如gitee会更可靠,引用[3]中提到的Pangolin就是通过gitee克隆的,所以可能同样适用于OpenCV。
然后配置CMake参数。这里需要注意ARM架构的特性,可能需要调整编译选项,比如开启NEON优化,但根据引用[2],用户提到使用NDK 25.2和Ubuntu 20.04,可能涉及到交叉编译,不过用户是在ARM的Ubuntu上直接编译,所以不需要交叉编译工具链。但需要确保CMake正确识别系统架构。
编译过程中使用make -j4或者根据CPU核心数调整线程数,这样可以加快编译速度。但需要确保系统有足够的内存,否则可能会失败。
安装后的环境配置,比如更新动态链接库路径,这样C++项目在编译时能找到OpenCV的库。可能需要编辑/etc/ld.so.conf.d/opencv.conf文件并运行ldconfig,这一步很重要,否则运行时会出现找不到库的错误。
测试阶段,编写一个简单的C++程序,使用pkg-config来获取编译选项,确保Makefile正确链接OpenCV库。如果测试程序能正确编译运行,说明安装成功。
可能遇到的问题包括依赖项缺失、CMake配置错误、编译过程中的错误,比如内存不足或者某些模块编译失败。根据引用[2],OpenCV4.6.0在编译时会报错,所以用户选择3.4.16是合理的。此外,确保NDK版本兼容,但这里用户可能不需要NDK,因为是在本地ARM架构上编译,而不是交叉编译到Android。
总结步骤:安装依赖、下载源码、配置CMake、编译安装、配置环境、测试验证。过程中需要仔细检查每一步的输出,确保没有错误。如果遇到问题,参考提供的引用资料中的解决方法,比如使用特定版本的依赖库或者调整CMake参数。</think>### 在 ARM 架构 Ubuntu 20.04 上安装 OpenCV 3.4.16 的步骤
#### 1. **安装系统依赖项**
```bash
sudo apt update
sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev libopenexr-dev libeigen3-dev libtbb2 libtbb-dev
```
*这些依赖项覆盖了编译工具、图像处理库和视频编解码支持[^1][^3]。*
#### 2. **下载 OpenCV 3.4.16 源码**
```bash
wget -O opencv-3.4.16.zip https://github.com/opencv/opencv/archive/3.4.16.zip
wget -O opencv_contrib-3.4.16.zip https://github.com/opencv/opencv_contrib/archive/3.4.16.zip
unzip opencv-3.4.16.zip && unzip opencv_contrib-3.4.16.zip
```
*若网络不稳定,可使用国内镜像源(如 Gitee)替代 GitHub 链接。*
#### 3. **配置 CMake 编译参数**
```bash
cd opencv-3.4.16
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.16/modules \
-D WITH_OPENGL=ON \
-D WITH_EIGEN=ON \
-D ENABLE_NEON=ON \ # 启用 ARM NEON 指令集优化
-D BUILD_opencv_python2=OFF \ # 若无需 Python2 支持则关闭
-D BUILD_EXAMPLES=OFF ..
```
*关键参数说明:*
- `ENABLE_NEON=ON` 针对 ARM 架构启用 SIMD 指令加速[^2]
- `OPENCV_EXTRA_MODULES_PATH` 指定 contrib 模块路径[^1]
#### 4. **编译与安装**
```bash
make -j$(nproc) # 根据 CPU 核心数分配线程加速编译
sudo make install
sudo ldconfig # 更新动态链接库缓存
```
*编译时间可能较长(约 1-2 小时),需确保系统内存充足。*
#### 5. **验证安装**
- **C++ 测试代码 (`test_opencv.cpp`):**
```cpp
#include <opencv2/opencv.hpp>
int main() {
cv::Mat img = cv::Mat::zeros(200, 200, CV_8UC3);
cv::putText(img, "OpenCV 3.4.16", cv::Point(20,100), cv::FONT_HERSHEY_SIMPLEX, 0.6, cv::Scalar(0,255,0));
cv::imshow("Test", img);
cv::waitKey(0);
return 0;
}
```
- **编译并运行:**
```bash
g++ test_opencv.cpp -o test $(pkg-config --cflags --libs opencv)
./test
```
*若显示绿色文字窗口,则安装成功[^1]。*
---
### 常见问题解决
1. **编译时内存不足**
- 减少编译线程数:`make -j2`
- 增加交换空间:`sudo fallocate -l 4G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile`
2. **找不到 Eigen3 库**
- 确保已安装 Eigen3:`sudo apt install libeigen3-dev`
3. **视频编解码支持缺失**
- 安装 FFmpeg 相关依赖:`sudo apt install libavcodec-dev libavformat-dev libswscale-dev`
---
###
阅读全文
相关推荐


















