本文是我的一个个人笔记:原文请查看:https://blog.csdn.net/llfjcmx/article/details/81238766
问题描述:首先在Ubuntu16.04上配置了最新的OpenCV3.2.0,再装一个opencv2.4.9
- 可以使用命令查看一下ubuntu上的OpenCV当前的版本
pkg-config --modversion opencv
在/usr/local/bin、/usr/local/include两个文件夹中可以看到opencv3.2.0的相关文件。
2.下载opencv的安装包,我下的是opencv2.4.9。然后安装依赖项
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
我安装的时候,有部分没装上,最后没有影响后面的安装,如下所示:
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
[sudo] yk 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
没有可用的软件包 libtiff4-dev,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
libtiff5-dev:i386 libtiff5-dev
E: 软件包 libtiff4-dev 没有可安装候选`
按照提示修改即可
3. 在/usr/local下面生成一个opencv249来安装存放opencv2.4.9的安装文件
这里先切到root 模式 输入 su 然后密码就可以
mkdir -p /usr/local/opencv249
- 进入解压后的opencv压缩包
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv249 ..
make
sudo make install
到这里,opencv的安装结束了。现在电脑上安装了两个版本的OpenCV,需要做一些配置。
- 修改bashrc文件来设置PKG_CONFIG_PATH
sudo gedit ~/.bashrc
在文件末尾加上下面两行:
export PKG_CONFIG_PATH=/usr/local/opencv249/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv249/lib
保存之后,source一下(不进行source也可以,重新开一个终端):
source ~/.bashrc
查看opencv的版本已经是2.4.9的了:
pkg-config --modversion opencv
- OpenCV3.2.0和OpenCV2.4.9使用的切换方法
我使用的是cmake工具,在CMakeLists.txt中加入下面几行即可使用OpenCV2.4.9:
set(OpenCV_DIR /usr/local/opencv249/share/OpenCV)
find_package(OpenCV 2.4 REQUIRED)
include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/opencv249/include)
如果想使用OpenCV3.2.0(一开始安装的就是这个)时,将上面的三行中的第1行和第3行去掉,然后将第2行改为即可。
find_package(OpenCV REQUIRED)
在另台电脑上安装报错(未解决):
../../lib/libopencv_highgui.so.2.4.10:对‘avcodec_alloc_frame’未定义的引用
../../lib/libopencv_highgui.so.2.4.10:对‘avcodec_encode_video’未定义的引用
collect2: error: ld returned 1 exit status
modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/build.make:673: recipe for target 'bin/opencv_test_imgproc' failed
make[2]: *** [bin/opencv_test_imgproc] Error 1
CMakeFiles/Makefile2:1682: recipe for target 'modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all' failed
make[1]: *** [modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2