环境及工具准备
- 个人电脑:
- GEC6818 嵌入式开发板
- Opencv3.2.0
- 交叉编译器
交叉编译 Opencv3.2.0
1.解压 opencv3.2.0
unzip opencv-3.2.0.zip
2.解压 opencv_contrib-3.2.0
tar -zxvf opencv_contrib-3.2.0.tar.gz
3.创建一个新目录,把 opencv3.2.0 和 opencv_contrib-3.2.0 放进去
mkdir opencv_build
mv opencv-3.2.0 opencv_contrib-3.2.0 ./opencv_build/
cd opencv_build
cd opencv-3.2.0
4.新建一个 build 文件并切换到这个目录
mkdir -p build && cd build
5.配置 cmake
如果没有 cmake-gui
先安装:
sudo apt-get install cmake-qt-gui
在 build
目录下运行 cmake-gui
安装路径如图所示:
点击 Configure
选择交叉编译器的路径,点击 Finish 即可
接下来增加选项
BUILD_ZLIB
BUILD_JPEG
BUILD_PNG
BUILD_opencv_world
OPENCV_ENABLE_NONFREE
取消部分选项
WITH_CUDA
WITH_GTK
WITH_FFMPEG
WITH_1394
WITH_GSTREAMER
WITH_TIFF
WITH_OPENEXR
WITH_OPENCL
BUILD_opencv_freetype
WITH_LIBV4L
修改安装路径
最后加上 opencv_contrib-3.2.0
然后点击点击 Configure
之后再点击 Generate
请注意,一定要连接网络,不然报错。
修改 CMakeCache.txt
保存退出
执行 sudo make -j4
报错了
关闭 WITH_GPHOTO2 选项
又报错
在 ~/expend/others/opencv3.2.0/opencv_build/opencv-3.2.0/modules/stitching
目录下修改 CMakeLists.txt
文件。
加上 INCLUDE_DIRECTORIES("/home/incipe/expend/others/opencv3.2.0/opencv_build/opencv_contrib-3.2.0/modules/xfeatures2d/include")
即可。
还是报错了
这个错改了我好久。。。。。%(&(…%¥&¥#!
最后实在没办法了,把 BUILD_opencv_world
选项去掉,轻松秒杀。
本来我是想着全编译成一个动态库,方便些的,做不到,就只能算了啊。
然后一路无阻,成功。
完成执行 sudo make install
即可。
最后所有编译好的库都在 /opt/opencv3.2.0/lib
里面了。
完结
这是第三次交叉编译 opencv
了,第一次最艰难,能成功真是运气好,第二次就单纯想再复现一次,结果也折腾了很久,不过次数越多,感觉对这东西的理解就越深刻,学习不仅仅只是学习课本知识,更重要的是提高自己发现问题,解决问题的能力。
因为前两次都没有加 opencv_contrib-3.2.0
本博客就是交叉编译了 opencv_contrib-3.2.0
的。
最后送一个编译 opencv 的 Makefile
.PHONY : all clean
cc = arm-none-linux-gnueabi-g++
include = /opt/opencv3.2/include
src = $(wildcard *.cc)
obj = $(patsubst %.cc, %, $(src))
all : $(obj)
% : %.cc
$(cc) -o $@ $^ -I ${include} `pkg-config --cflags --libs opencv` -std=c++11 -g -Wall
clean:
rm -rf $(obj)