opencv 2.0 移植到spv210 cortex A8

本文详细介绍了如何在Ubuntu 12.04系统中,使用4.4.1交叉编译器将OpenCV 2.0.0移植到华天正SPV210 Cortex A8板子上。过程中涉及了libz、libjpeg、libpng、libxvid、yasm等库的交叉编译,以及环境变量配置和测试程序的编译步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux环境:ubuntu-12.0.4

交叉编译:4.4.1

arm板子:华天正的210板子

板子环境:linux2.6.35

准备库:libz  libjpeg libxvid libpng  opencv yasm-0.7.2 libtool

注:本人没有把ffmpeg编进去 以后会尝试

版本:

交叉编译器4.4.1: arm-2009q3.tar.bz2

libz:      zlib-1.2.3

libjpeg:   jpegsrc.v6b

libpng:    libpng-1.2.18

libyasm:   yasm-0.7.2

opencv:    opencv-2.0.0

libxvid:   xvidcore-1.3.2

libtool:  libtool-2.2.4.tar.gz

1, 安装交叉编译器

解压arm-2009q3.tar.bz2到/usr/local/arm/目录下,修改文件夹名为4.4.1

设置环境变量:

#vi /etc/profile 在最后添加如下内容

export PATH=$PATH:/usr/local/arm/4.4.1/bin

终端执行命令使环境变量立即生效:#source /etc/profile

下面所有编译的库都放在目录:/usr/local/arm/4.4.1/arm-none-linux-gnueabi下。这么做的原因是避免在编译其他库时,需要重新指定依赖库的路径,经验告诉我,这样做同时能够消除,依赖库路径所带来的麻烦。

2、安装libtool工具

解压libtool-2.2.4.tar.gz

进入libtool目录

#./configure

#make

#make install

3、libz的交叉编译:

解压zlib-1.2.3

进入libz的目录:

CC=arm-linux-gcc ./configure --prefix=/usr/local/arm/4.4.1/arm-none-linux-gnueabi --shared

#make

#make install

4、libjpeg的交叉编译:

在/usr/local/arm/4.4.1/arm-none-linux-gnueabi目录下新建 man/man1

#mkdir man/man1


解压jpegsrc.v6b

进入jpeg的目录:

将libtool目录里的config.guess和config.sub复制到jpeg目录下

#cp /usr/share/libtool/config/config.sub ./

#cp /usr/share/libtool/config/config.guess ./


#./configure --prefix=/usr/local/arm/4.4.1/arm-none-linux-gnueabi --enable-shared –enable-static

#gedit Makefile (修改Makefile中cc =arm-linux-gcc ar=arm-linux-ar ar2=arm-linux-ranlib)

#make

#make install

4、libpng的交叉编译

解压libpng-1.2.18

进入png的目录:

#./configure --prefix=/usr/local/arm/4.4.1/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux

#make

#make install

5、yasm的交叉编译:

解压yasm-0.7.2

进入yasm目录:

#./configure --prefix=/usr/local/arm/4.4.1/arm-none-linux-gnueabi --enable-shared --enable-static --host=arm-linux

#make

#make install

6、libxvid的交叉编译:

解压xvidcore-1.3.2

进入build/generic目录:

#./configure --prefix=/usr/local/libxvid --host=arm-linux  --disable-assembly

#make

#make install

7、opencv2.0.0的交叉编译:

解压opencv-2.0.0

进入opencv2.0.0目录:

在终端中输入:

#./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --enable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/usr/local/arm/4.4.1/arm-none-linux-gnueabi/include/ LDFLAGS=-L/usr/local/arm/4.4.1/arm-none-linux-gnueabi/lib --with-v4l --prefix=/usr/local/arm/4.4.1/arm-none-linux-gnueabi  CXXFLAGS=-O2

#make

#make install

到此,opencv-2.0.0的一直算是成功了。接下来,需要把所有的库烧写到arm板子上去,如果烧写到根目录的lib目录下,那么不用指定LD-LIBRARY-PATH,反之则反之。

接下来编译一段测试程序 opencvTest.c 程序的功能是读取源图片处理后生成原图片的轮廓图片

#include<stdio.h>
#include<stdlib.h>
#include"cv.h"
#include"cxcore.h"
#include"highgui.h"
int main(int argc, char** argv )
{
	IplImage* in;
	if(argc == 3 && (in = cvLoadImage(argv[1], 0))!= 0)
	{
		printf("load\n");
		IplImage* out = cvCreateImage(
			cvGetSize(in),
			IPL_DEPTH_8U,
			1	
		);
		printf("created\n");
		cvCanny(in, out, 20 , 60, 3);
		printf("down\n");
		cvSaveImage(argv[2], out, 0);
		return 0;
	}
	return -1;
}

在pc机上编译此程序

#arm-linux-gcc -I/usr/local/arm/4.4.1/arm-no-linux-gnueabi/include/opencv -I/usr/local/arm/4.4.1/arm-none-linux-gnueabi/include/ -L/usr/local/arm/4.4.1/arm-none-linux-gnueabi/lib  -lcv -lcxcore -lhighgui -lpng -lpng12 -ljpeg -lz opencvTest.c -o opencvTest

将程序拷贝到开发板上,同时也拷贝一张图片到开发板上

我的源图片名为frame.jpg 生成的图片名为frame2.jpg

执行程序

#./opencvTest /home/plg/frame.jpg(原图片路径) /home/plg/frame2.jpe(生成图片路径)

ok 如果有轮廓图片生成证明移植成功了 大笑





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值