### Ubuntu14.04上实现OpenCV2.4.8与OpenCV3.3.1多版本共存的方法
#### 一、背景介绍
在Ubuntu14.04操作系统中,用户可能会遇到需要同时安装并使用不同版本的OpenCV的情况。这通常是因为某些应用程序或库(如ROS中的`cv_bridge`和`image_pipeline`)依赖于特定版本的OpenCV,而新开发的项目可能需要使用更新的OpenCV功能。因此,如何在同一个系统中管理多个版本的OpenCV成为一个重要的问题。
#### 二、准备工作
1. **确认当前OpenCV版本**:需要确认系统中已安装的OpenCV版本。可以通过命令`pkg-config --modversion opencv`来查询。
2. **备份现有环境**:在进行任何更改前,备份重要的配置文件和数据是非常必要的,以防万一出现问题可以快速恢复。
#### 三、安装OpenCV3.3.1
1. **下载OpenCV源码包**:根据需要选择合适的OpenCV版本下载,这里以OpenCV3.3.1为例。可以从官方网站或其他可靠的来源下载。
2. **安装依赖库**:使用以下命令安装OpenCV编译所需的依赖库:
```bash
sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
```
3. **创建构建目录**:在解压后的OpenCV源码目录中创建一个名为`build`的子目录,并进入该目录。
```bash
mkdir build && cd build
```
4. **配置编译参数**:使用`cmake`工具进行配置。如果系统中已安装CUDA,但在编译过程中遇到了与CUDA相关的错误,可以关闭相关选项。例如:
```bash
sudo mkdir -p /usr/local/opencv331
cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DWITH_V4L=ON -DWITH_CUBLAS=0 -DWITH_CUDA=0 -DWITH_CUFFT=0 -DCMAKE_INSTALL_PREFIX=/usr/local/opencv331 ..
```
5. **编译并安装**:执行以下命令完成编译和安装过程。
```bash
make
sudo make install
```
6. **配置环境变量**:为了使系统能够识别到新安装的OpenCV版本,需要在`.bashrc`文件中添加相应的环境变量配置。编辑`.bashrc`文件并添加以下内容:
```bash
export PKG_CONFIG_PATH=/usr/local/opencv331/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv331/lib:$LD_LIBRARY_PATH
```
保存文件后,运行`source ~/.bashrc`以使更改生效。
#### 四、验证安装结果
1. **检查版本信息**:再次使用`pkg-config --modversion opencv`命令查看OpenCV的版本号,应显示为3.3.1。
2. **测试安装**:可以通过编写简单的OpenCV程序来测试新安装的版本是否正确无误地被系统识别。
#### 五、在项目中使用指定版本的OpenCV
1. **配置CMakeLists.txt**:如果使用`cmake`作为构建工具,则可以在项目的`CMakeLists.txt`文件中指定使用的OpenCV版本。例如,要使用OpenCV3.3.1,可以在文件中添加如下内容:
```cmake
find_package(OpenCV3.3 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(your_project main.cpp)
target_link_libraries(your_project ${OpenCV_LIBS})
```
2. **切换OpenCV版本**:如果需要在不同的项目之间切换OpenCV版本,只需在`CMakeLists.txt`文件中更换`find_package`命令中的版本号即可。例如,要切换回OpenCV2.4.8,可以将`find_package(OpenCV3.3 REQUIRED)`替换为`find_package(OpenCV REQUIRED)`,并将上述示例中的其他几行删除。
#### 六、总结
通过上述步骤,可以在Ubuntu14.04上成功实现OpenCV2.4.8与OpenCV3.3.1的多版本共存,并能够在不同的项目中灵活选择所需的OpenCV版本。这种方法不仅适用于OpenCV,对于其他有版本依赖需求的软件也有很好的参考价值。