前言
由于项目的需要,需要做TIFF和JPEG的图片转换,百度了一圈,发现还是这个方案可操作性最强。之前一直在window上玩,用GDI+可以实现,现在跑到LINUX上了,简直就是新手一枚,弱爆了,特此把整个过程给记录下来,供后面有需要的人借鉴和学习。
编译环境
- 操作系统:Ubuntu 16.04 TS 、中标麒麟
- Opencv版本: opencv-3.4.3源码
- 权限说明:建议用root权限来执行以下命令
操作流程
1、依赖库安装
-
软件源更新
sudo apt-get update -
升级本地所有安装包,最新系统可以不升级,版本过高反而需要降级才能安装
sudo apt-get upgrade -
安装构建OpenCV的相关工具(安装build-essential、cmake、git和pkg-config)
sudo apt-get install build-essential cmake git pkg-config -
安装常用图像工具包:
-
安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev -
安装tif格式图像工具包
sudo apt-get install libtiff5-dev -
安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev -
安装png图像工具包
sudo apt-get install libpng12-dev
-
-
安装视频I/O包(注意最后一个包的数字“4”后面是“L”):
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -
安装gtk2.0(ubuntu有可能出现包版本过高的情况,需要将依赖包降级安装)
sudo apt-get install libgtk2.0-dev -
优化函数包
sudo apt-get install libatlas-base-dev gfortran
好啦,依赖包搞定啦,恭喜!
2、下载源码包
-
使用wget下载OpenCV源码;
-
也可以到https://github.com/opencv/opencv/releases下载OpenCV3.4.3的源代码*. tar.gz格式(LINUX格式),需要解压好,放到用户目录下;
-
使用wget下载OpenCV_contrib,网友亲测直接到Github下载zip文件的话,会有编译问题;
-
// 下载OpenCV
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip -
// 解压OpenCV
unzip opencv-3.4.3.zip -
// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip -
// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.3.zip
-
3、编译源码包
接下来这个是关键,会有许多坑,请系好安全带,收好榔头,杜绝翻车!
(1) 打开源码文件夹
cd opencv-3.4.3
(2) 新建release文件夹
mkdir release
(3) 进入release文件夹
cd release
(4) 设置cmake编译参数
安装目录默认为/usr/local,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点(注意!如果在root用户下执行cmake命令,请将OPENCV_EXTRA_MODULES_PATH的值改为绝对路径,如:/home/joeya/opencv_contrib-3.4.3/modules)
CMAKE_BUILD_TYPE是编译方式
CMAKE_INSTALL_PREFIX是安装目录
OPENCV_EXTRA_MODULES_PATH是加载额外模块
INSTALL_C_EXAMPLES是安装C语言的例程
BUILD_EXAMPLES是编译例程(这个可以不加,不加编译稍微快一点点)
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules
-D INSTALL_C_EXAMPLES=ON
-D BUILD_EXAMPLES=ON …
(5) 正式编译过程
编译,以管理员身份,否则容易出错make命令参数-j4指允许make使用最多4个线程进行编译 所以可以根据自己机器的情况进行更改;
sudo make -j4
先用以上命令跑,可以加快速度,如果碰到问题,就用sudo make 再跑一边,编译中止会提示出错的原因。我安装的过程中报了两个错(其实安装了好几遍),一个缺少boostdesc_bgm.i(下载之后放在提示的路径里),另一个是提示缺少/opencv/xfeatures2d/cuda.hpp(把opencv-conrtib.3.4.3/…/opencv2/下的内容,考到/opencv-3.4.3/modules/stitching/include/opencv2/下 就好了!!!)
安装
sudo make install
更新动态链接库,这个必须搞,否则后面开发还会编译错误的。
sudo ldconfig
(6) 编译过程中出现的问题
1.在编译到后半段的时候一般会出现openc_contrib 提示缺少boostdesc_bgm.i文件而出错
这个是由于官方所给的那两个包不全,(没有此错误的可以忽略)
解决方法如下:
百度云盘里下载然后将所有带i结尾的文件全部都拷贝到 opencv_contrib/modules/xfeatures2d/src/ 路径下即可
安装opencv时丢失的文件:
链接:https://pan.baidu.com/s/1xi6_5NuTFiP4SD649FgIJw
提取码:mbsj
然后继续上面的编译操作即可
2.在编译到94%左右时可能会出现fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录的错误标志 (没有此错误的可以忽略)
解决方法如下:
将/home/…/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2目录下的xfeatures2d文件夹和xfeatures2d.hpp文件复制粘贴到
/home/…/opencv-3.4.0/modules/stitching/include/opencv2目录下即可解决,
3.在编译到99%左右时可能会出现
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21769:modules/python3/CMakeFiles/opencv_python3.dir/all]
错误 2:
make: *** [Makefile:163:all] 错误 2 的错误标志(没有此错误的可以忽略)
这个可能是由于系统版本不同的不兼容所致
解决方法如下:
首先找到/home/pi/Downloads/opencv-3.4.0/modules/python/src2 中的cv2.cpp文件,
然后在第885行把char* 改成 const char* 即可解决,最后继续上面的编译操作即可。