linux安装opencv

发布时间 2023-11-28 23:43:54作者: 海尚书
安装步骤:
1、去官方网站下载使用的压缩包: https://opencv.org/releases.html
2、上传到服务器并解压文件
cd /usr/local/
unzip opencv-2.4.13.zip
3、创建编译目录,用于存放编译文件
在/usr/local/下
mkdir opencv
4、安装和配置依赖支持
如果没有cmake,去cmake的官网http://cmake.org/cmake/resources/software.html下载最新的cmake,通过yum安装的cmake(2.6.4)查询JNI环境失败 
安装:
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar xvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
sh bootstrap && make && make install
 
安装好cmake之后,还需要安装相应的依赖,如下
 
安装opencv的依赖库 
安装python支持,需要先安装numpy  
安装图片库的支持  
安装ant,如果用java调用的话,必须安装ant 
之后开始使用cmake进行编译 
 
  1. yum install numpy.x86_64 numpy-f2py.x86_64  
  2. yum install libtiff.x86_64 libjpeg.x86_64 libpng.x86_64 jasper-libs.x86_64  
  3. yum install libtiff-devel.x86_64 libjpeg-devel.x86_64 jasper-devel.x86_64 libpng-devel.x86_64     
  4. yum install ant  
 
 
  1. cd opencv
  2.  用到cmake的选项:
  3.    BUILD_SHARED_LIBS:共享   
  4.    BUILD_EXAMPLES:编译demo   
  5.    BUILD_FAT_JAVA_LIB:java支持 (如果java调用opencv,必须打开这个选项)  
  6.    INSTALL_PYTHON_EXAMPLES:安装python的demo   
 
cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_FAT_JAVA_LIB=ON ../opencv-2.4.13   
 
确认log没有报错,如果有错误请根据提示安装相应的库或设置环境变量 
如果顺的话,打开编译目录的CMakeCache.txt,可以看到下面的信息 
  1. //Include opencv_java module into the OpenCV build  
  2. BUILD_opencv_java:BOOL=ON  
 
说明java支持都已经安装ok 
 
5、使用make进行编译和安装 
 
  1. make && make install  
  2. sudo cp bin/libopencv_java2413.so /usr/local/lib/  
  3. sudo ln \-s /usr/local/lib/libopencv_java2413.so /usr/lib/libopencv_java2413.so
 
错误解决:
centos7 make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_jpeg2000.cpp.o] 错误 1
 
In file included from /usr/include/jasper/jasper.h:77,
from /usr/local/opencv-2.4.13/modules/highgui/src/grfmt_jpeg2000.cpp:58:
/usr/include/jasper/jas_math.h:70:1: error: unterminated #ifndef
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/grfmt_jpeg2000.cpp.o] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
[root@vm131 opencv]# vi /usr/include/jasper/jas_math.h
 
错误原因:2017年5月15日,centos更新了jaspe-devel包为jasper-devel.x86_64 0:1.900.1-30.el7_3(旧版本为jasper-devel-1.900.1-29.el7.x86_64) 解决方案: vi /usr/include/jasper/jas_math.h #在 #include 后添加 #ifndef SIZE_MAX #define SIZE_MAX (4294967295U) #endif
 
 
意外1:
190服务器发生过一次opencv无法使用的问题,现象就是system.loadlibrary的时候无法加载
找了半天原因,发现是library.path被变更导致
 
# vi /etc/profile  发现LD_LIBRARY_PATH=被设置成了其他路径(梅工做测试用的),
变更成如下配置了
export PATH=$PATH:/opt/lampp/bin/
export LD_LIBRARY_PATH=/opt/lampp/lib
注释掉这两行,source /etc/profile  一下就可以了。
 
ps:LD_LIBRARY_PATH的作用
Java有两个Path,一个是classpath,另外一个library.path。
classpath是设置JDK的lib位置.
而library.path是设置引用的非Java类包(如DLL,SO)的位置。
 
关于LD_LIBRARY_PATH的配置问题:
意外2:之后133服务器因需要增加/opt/lampp/lib,又一次将opencv导致不可用
echo $LD_LIBRARY_PATH; 配置显示也包含usr/lib,但是发现有2个地方配置了LD_LIBRARY_PATH,一个是在/etc/profile,一个是在根目录下vi .bash_profile,此处里也可以进行LD_LIBRARY_PATH的配置。不管三七二十一,先保留一个再试。果然可以了。
 
最终解决方案
133 我这样修改的,先是去掉了/etc/profile 里
0
这两行配置,然后在根目录下的.bash_profile里改成这样设置:
0
 source了一下,opencv就好用了。
 
export PATH=$PATH:/opt/lampp/bin/
export LD_LIBRARY_PATH=/usr/lib:/opt/lampp/lib
 
find / -name .bash_profile
 
备注:JDK的设置没有生效时,看看是否是更改配置前的会话,重新开一个会话看是否有问题