写下文章:记录与修改,以铭记。
一、开发环境:
环境:ubuntu11.04
交叉编译工具:gcc version 4.5.1 (ctng-1.8.1-FA)友善的东西
opencv版本:OpenCV-2.3.1a.tar.bz2(这里可以下载: http://sourceforge.net/projects/opencvlibrary/files/)
cmake:cmake version 2.8.0()
一些依赖:因为之前在本地编译过(官网有介绍)
在终端运行:
sudo
apt-get
install
build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
安装:cmake
apt-get install cmake-gui
apt-get install cmake
解压:
tar xvf OpenCV-2.3.1.tar.bz2
我使用的是友善提供的交叉编译工具。安装在/opt/FriendlyARM/toolschain/4.5.1/bin/目录下,
解压后,进入目录
cd OpenCV-2.3.1
运行:cmake-gui如果没有安装,系统会提示你安装
选择source file
选择build目录
点configure
然后选择:
next填路径:
Operating System :arm-none-linux
Compilers:
是交叉编译工具GCC与G++的目录,图中是我的目录
Target Root:****
点Finish
然后再回到Cmake目录下:
在这里选择该先与不先的东西,同时因为我之前在x86上编译过,
如上图。。
所以我把CMAKE_INSTALL_PREFIX改成:/usr/local/arm
同时添加了WITH_QT
因为添加WITH_QT_OPENGL时编译出错,所以后来去掉了。
同时修改QT_QMAKE_EXECUTABLE:/usr/local/Trolltech/QtEmbedded-4.7.0-arm/bin/qmake, 不然后面会有 asm错误L
然后configure,再generate。。
进入/home/da/openCV/OpenCV-2.3.1-arm目录。
make
90%出现下面的错误:
/home/da/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h: In function 'T cvflann::abs(T) [with T = long double]':
/home/da/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h:63: error: 'fabsl' was not declared in this scope
make[2]: *** [modules/flann/CMakeFiles/opencv_flann_pch_dephelp.dir/opencv_flann_pch_dephelp.obj] Error 1
make[1]: *** [modules/flann/CMakeFiles/opencv_flann_pch_dephelp.dir/all] Error 2
make: *** [all] Error 2
继续make
x264-snapshot-20120608-2245库下载地址:
http://www.mmnt.net/db/0/98/www.videolan.org/pub/videolan/x264/snapshots/
yasm-1.2.0下载地址:
http://www.linuxfromscratch.org/blfs/view/svn/general/yasm.html
xvidcore-1.3.2下载地址:
http://www.xvid.org/Downloads.43.0.html
jpegsrc.v7:
http://www.imagemagick.org/download/delegates/
ffmpeg:
http://www.ffmpeg.org/releases/
zlib:
http://www.zlib.net/
libpng
http://www.libpng.org/pub/png/libpng.html
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <stdio.h>
int main(int argc,char **argv)
{
CvCapture* capture = NULL;
IplImage* frame = NULL;
if(!(capture = cvCaptureFromCAM(-1)))
{
fprintf(stderr, "Can not open camera./n");
return -1;
}
cvNamedWindow("video", 1);
while(frame = cvQueryFrame( capture ) )
{
cvShowImage("video", frame);
}
cvDestroyWindow("video");
cvReleaseCapture(&capture);
return 0;
}
arm-linux-gcc -o test test.c -I /usr/local/arm/include/opencv -L /usr/local/arm/lib -lopencv_core -lopencv_highgui -lpthread -lrt