opencv2.4.9移植到arm

转载请附链接http://blog.csdn.net/u014199378/article/details/72408413

一、 下载opencv源码和cmake-gui

1.从http://opencv.org/releases.html下载opencv-2.4.9.tar.gz

2.若是centos下载cmake和cmake-gui

   yum install cmake cmake-gui

3.若是ubuntu 下载cmake和cmake-gui

   apt-get install  cmake cmake-gui


二、运行cmake-gui编译opencv源码

1.解压opencv源码到/opt/opencv

tar zxvf opencv-2.4.9.tar.gz -C /opt/opencv

2.执行cmake-gui

选择源码路径和编译路径

opencv2.4.9移植到arm

选择arm-linux交叉编译器

opencv2.4.9移植到arm


opencv2.4.9移植到arm

点finish,此时配置会出错,我的电脑没有安装cuda库 所以将WITH_CUDA取消勾选,同时还需要将WITH_TIFF取消勾选

把CMAKE_INSTALL_PREFIX变量改为opencv安装目录 系统默认为/usr/local  我安装在/usr/local/opencv_arm下

opencv2.4.9移植到arm

最后点Generate,在编译路径/opt/opencv_arm下就生成了Makefile


3在执行Makefile之前需要修改CMakeCache.txt文件的194行

CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl

添加几个库

然后执行make和make install

在/usr/local/opencv_arm就生成好了opencv库文件和头文件



三、测试opencv库

在此之前需要将/usr/local/opencv_arm/lib下的所有文件拷贝到/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib目录下,因为交叉编译的时候会调用


test.cpp源文件

#include "opencv2/highgui/highgui.hpp"
using namespace std;

const char *picture = "./1.jpg";
int main(int argc,char *agrv[])
{
        IplImage * pImage = cvLoadImage(picture,1);
        cvNamedWindow("Test",CV_WINDOW_AUTOSIZE);
        cvShowImage("Test",pImage);
         cvWaitKey(0);
        cvReleaseImage(&pImage);
        cvDestroyWindow("Test");
}



Makefile文件

all:test
CFLAGS=-Wall
OPENCV_INCLUDE=-I /usr/local/opencv_arm/include
CC = arm-linux-g++
OPENCV_LINK =-L/usr/local/opencv_arm/lib -lopencv_highgui -lopencv_core -lpthread -lrt
%:%.cpp
#$(CC) `pkg-config opencv --libs` $(OPENCV_INCLUDE) $< -o [email protected] $(OPENCV_LINK)
        $(CC) $(OPENCV_INCLUDE) $< -o [email protected] $(OPENCV_LINK)
.PHONY:clean
clean:
        rm -f test

编译成功,然后将/usr/local/opencv_arm中库文件拷贝到开发板/usr/lib目录,头文件拷贝到开发板的/usr/include目录

将可执行文件也拷贝到开发板执行即可