OpenCV在龙芯平台上的移植

ARM 105浏览

opencv 2.2.0的移植方法:

按照文章:“OpenCV在ARM上的移植 - emouse - 博客园”给出的步骤方法进行

修改的地方:

1、原指定交叉编译器为arm的都改为mipsel,交叉编译器的路径也为Redhat虚拟机中的实际路径/usr/local/mips-linux-gcc/gcc-3.4.6-2f;

2、在/opt/opencv/opencv-mips文件夹里(这个文件夹里存放的是用Cmake-gui对OpenCV-2.2.0进行设置编译之后产生的文件),修改CMakeCache.txt文件第80行,将CMAKE_EXE_LINKER_FLAGS:STRING=' '改为:CMAKE_EXE_LINKER_FLAGS:STRING=-lrt (不是文章里说的173行添加:-lpthread -lrt)。

3、设置完Cmake-gui之后,用make命令编译OpenCV-2.2.0的时候产生了:OpenCV-2.2.0/modules/ml/src/gbt.cpp中'expl'未定义的错误,将此文件第14行和第16行注释掉,就不再报错了;

4、make install之后产生的文件在/usr/local/mips-linux-gcc文件夹里。

//5、将/usr/local/mips-linux-gcc文件夹里的文件转移到/usr/local/opencv-mips-2.20中。

6、卸载时用终端进入到/opt/opencv/opencv-mips目录里,然后输入:make install。

opencv 1.0.0的移植方法:

1、将源码opencv-1.0.0.tar-for-linux.gz放在虚拟机/opt/opencv文件夹里;

2、从终端中输入tar zxvf opencv-1.0.0.tar-for-linux.gz解压到本文件夹中,生成目录opencv-1.0.0;

3、进入目录opencv-1.0.0,如果想把opencv安装在/opt/opencv/opencv-mips,则在终端中输入:./configure --host=mipsel-linux --without-gtk --without-carbon  --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps
CXX=mipsel-linux-g++ CPPFLAGS=-I/usr/include --prefix=/opt/opencv/opencv-mips --libdir=/opt/opencv/opencv-mips/lib --includedir=/opt/opencv/opencv-mips/include --datadir=/opt/opencv/opencv-mips/data  回车;

如果想把opencv安装在/usr/local,则在终端中输入:./configure --host=mipsel-linux --without-gtk --without-carbon  --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=mipsel-linux-g++ CPPFLAGS=-I/usr/include
 回车;

4、运行完configure之后入无错误则继续在终端中输入make,进行编译;这时会有错误产生:impossible constraint in 'asm',打开../opencv-1.0.0/otherlibs/highgui文件夹里的makefile文件,将155行:-I/usr/include用#注释掉,将266行:/usr/include用#注释掉;再次make,应该无错误产生;

5、make install之后生成的文件放到了第3步指定的文件夹中,在虚拟机中已经分别在这两个文件夹中都生产了opencv-1.0.0编译后的文件;

6、编辑/etc/profile,在里面添加一行:export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig,接着需要把/usr/local/lib/pkgconfig里opencv.pc文件的第11行修改为:Libs: -L${libdir} -lcxcore -lcv -lhighgui -lcvaux -lml -lpthread -ldl;

7、找到opencv-1.0.0 sample文件夹里的drawing.c文件,将它拷贝到/software/facedetect文件夹里,在这里运行:mipsel-linux-g++ drawing.c -o drawing `pkg-config --cflags --libs opencv` ,会生成drawing可执行文件;

8、在开发板/etc/profile文件里export LD_LIBRARY_PATH=/lib:/usr/lib语句后面增加“:/lib/opencv”;

9、开发板的终端控制台通过nfs服务连接到虚拟机,将虚拟机/opt/opencv/opencv-mips/lib文件更名为opencv,放到nfs共享文件夹里,在开发板的终端控制台输入命令cp -r opencv /lib,将opencv动态链接库拷贝到开发板/lib/opencv文件夹里;

10、在开发板中运行drawing,会提示不支持GTK,因为opencv在linux里不支持GTK方法,需要修改drawing.c,让其不使用GTK。