opencv在arm开发板上的移植

环境:

Ubuntu12.10 + friendlyarm smart210 + arm-linux-gcc 4.3.3 + opencv2.3.1 + cmake 2.8.7


准备工作:

下载opencv2.3.1安装包,arm-linux交叉编译器工具包

解压arm-linux-gcc 4.3.3.tar.gz: tar zxvf arm-linux-gcc 4.3.3.tar.gz -C /

-C的意思是改变解压路径(change),注意C是大写,这时交叉编译工具会自动解压到/usr/local/arm/4.3.3

解压opencv2.3.1

建立文件夹 /usr/opencv/ 将opencv的源代码放在此处,解压后为/usr/opencv/OpenCV-2.3.1

安装cmake,在此不累述


注意:如果是在虚拟机里操作,在windows下载了文件用vmtools共享文件夹来拿安装包,一定要先将其拷贝至Ubuntu中ext格式的文件系统中

因为共享文件夹的文件格式不完全被Linux兼容,解压时经常会出现问题,即使当时不出现问题,日后的问题恐怕更令人生畏


编译arm板使用的opencv库:

首先我们建立两个文件夹:

存放makefile的文件夹:/home/usrname/opencv-cmake

存放编译完成的opencv库的文件夹:/usr/local/

cmake会生成makefile以及其所需文件,会放在建立的第一个文件夹;

arm所用的opencv库会放在第二个文件夹,放在/usr/local不是一个明智的选择,最好自己建立文件夹,再次先偷个懒


cmake的使用:

在终端中root登陆,键入命令cmake-gui,打开cmake图形界面,填入如下内容:



opencv在arm开发板上的移植_第1张图片


之后点击config,在出现的界面中如下选择:


opencv在arm开发板上的移植_第2张图片


点击next之后,设置如下:


opencv在arm开发板上的移植_第3张图片


点击finish,会自动config,这时我们需要修改一些参数:

CMAKE_BUILD_TYPE :填写 Release

CMAKE_INSTALL_PREFIX :填写我们为arm版opencv建立的文件夹

然后去掉WITH_TIFF的勾选,至于WITH_JPAG之类的选项,按需选择,但是需要Ubuntu中先装好相应的库

配置结束,点击config,最后点击generate.


编译:

进入我们生成makefile的文件夹,修改CMakeCache.txt ,找到CMAKE_EXE_LINKER_FLAGS:STRING,在后面加上-pthread-ldl -lrt

然后make编译,make install安装.

我们就得到了arm版的opencv,这时进入/usr/local,建立pkgconfig文件夹,进入该文件夹建立opencv.pc文件

编写这些库的pkgconfig文件,至于编写方式,也可以偷个懒,先编译Ubuntu版本的opencv,编译过程类似,不是使用交叉编译器,编译完成会自动生成pkgconfig文件夹

拿到这个文件夹稍作修改,就能变成我们想要的文件了


测试:

编辑opencv文件,用以下命令编译:

arm-linux-gcc main.c -o arm.o `pkg-config --libs --cflags opencv` -lrt -pthread


如果报错:

/usr/local/include/opencv/cv.h:63:33: error: opencv2/core/core_c.h: No such file or directory
/usr/local/include/opencv/cv.h:64:33: error: opencv2/core/core.hpp: No such file or directory
则将 /usr/local/include/下文件夹 opencv2 复制到  /usr/local/arm/4.3.3/arm-none-linux-gnueabi/include/ 即可 

如果编译时出现:

main.cpp:7: warning: deprecated conversion from string constant to 'char*'
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /home/william/opencv/lib/libopencv_core.so when searching for -lopencv_core
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lopencv_core
collect2: ld returned 1 exit status

......

则可以选择无视,但在开发板上会报错,这时在开发板上将程序放在合适的目录下,确定报错的目录有我们的opencv库即可


你可能感兴趣的:(linux,linux,arm,opencv)