移植opencv3.2.0含opencv_contrib

环境及工具准备

  • 个人电脑:

移植opencv3.2.0含opencv_contrib_第1张图片

  • GEC6818 嵌入式开发板
  • Opencv3.2.0

移植opencv3.2.0含opencv_contrib_第2张图片

  • 交叉编译器

移植opencv3.2.0含opencv_contrib_第3张图片

交叉编译 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

安装路径如图所示:

移植opencv3.2.0含opencv_contrib_第4张图片

点击 Configure

移植opencv3.2.0含opencv_contrib_第5张图片

移植opencv3.2.0含opencv_contrib_第6张图片

选择交叉编译器的路径,点击 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

修改安装路径

移植opencv3.2.0含opencv_contrib_第7张图片

最后加上 opencv_contrib-3.2.0

移植opencv3.2.0含opencv_contrib_第8张图片

然后点击点击 Configure 之后再点击 Generate

请注意,一定要连接网络,不然报错。

修改 CMakeCache.txt

移植opencv3.2.0含opencv_contrib_第9张图片

保存退出

执行 sudo make -j4

报错了

移植opencv3.2.0含opencv_contrib_第10张图片

关闭 WITH_GPHOTO2 选项

又报错

移植opencv3.2.0含opencv_contrib_第11张图片

~/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") 即可。

移植opencv3.2.0含opencv_contrib_第12张图片

还是报错了

移植opencv3.2.0含opencv_contrib_第13张图片

这个错改了我好久。。。。。%(&(…%¥&¥#!

最后实在没办法了,把 BUILD_opencv_world 选项去掉,轻松秒杀。

本来我是想着全编译成一个动态库,方便些的,做不到,就只能算了啊。

然后一路无阻,成功。

移植opencv3.2.0含opencv_contrib_第14张图片

完成执行 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)

你可能感兴趣的:(#,Linux,#,IOT,#,软件使用)