opencv arm64移植到arm占用多大内存

Opencv2.0移植ARM全过程29
上亿文档资料,等你来发现
Opencv2.0移植ARM全过程29
Opencv2.0移植ARM(CortexA8);Opencv2.0移植ARM(CortexA8);前言;本人在移植Opencv到ARM-linux系统上;准备工作;首先得选择一个linux系统,比如Fedora、;PC主机:VMware+Ubuntu11.04上;目标的ARM板:Smart210withLinu;交叉编译器:友善之臂官方提供的toolcha
Opencv2.0移植ARM(Cortex A8)全过程by HDU刘秀14年9月10日
Opencv2.0移植ARM(Cortex A8)全过程
本人在移植Opencv到ARM-linux系统上经历坎坷的路程,由当初师兄手把手教如何交叉编译移植一个不成功的Opencv1.0的交叉编译库(ffmpeg一直移植不成功)。到之后在项目中需要ffmpeg解码,想方设法曾经利用v4l2进行camrea数据的读取,奈何mjpeg解码迟迟没有成功;项目上问题不得不解决,心想Opencv已经是很成熟肯定能配置成功ffmpeg的,就不断地百度经过半个月的编译终于成功了。于是写下这篇文档帮助那些和我一样遇到这样困难的人,如有错误请联系我将改正。
首先得选择一个linux系统,比如Fedora、Redhat、ubuntu等等。讲讲我采用的环境,我也是属于windows这种手残党的,不肯舍弃windows系统。
PC主机:VMware+Ubuntu11.04上进行交叉编译
目标的ARM板:Smart210 with Linux3.0.8
交叉编译器:友善之臂官方提供的 toolchains 4.5.1
我所有的交叉编译库文件都将生成在opencv-arm文件夹中
一、交叉编译链的安装
根据友善之臂提供的文件有个arm-linux-gcc的文件夹拷贝到ubuntu中。
1. 解压:采用terminal的输入代码的形式比较烦琐,我都是直接手动点解压到当前用户主文件夹(/home/liuxiu/)中,接下来的库文件都是解压到这主文件夹下进行配置安装的。
2. 配置环境变量:为了使用方便,在terminal不用输入绝对路径,编辑/etc/bash.bashrc文件添加交叉编译链的路径到环境变量Path中,只要在这个文件中添加下面这 2 个语句即可: PATH=/home/liuxiu/opt/FriendlyARM/toolschain/4.5.1/bin$PATH
export PATH
3. 编辑完毕后使用 source /etc/bash.bashrc 命令执行以下这个文件,让设置生效,之后再输入: $ arm-none-linux-gnueabi-gcc -v
如果输出下面的信息则表面设置成功:
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/liuxiu/opt/FriendlyARM/toolschain/4.5.1/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /work/toolchain/build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --
prefix=/opt/FriendlyARM/toolschain/4.5.1 --with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp --with-pkgversion=ctng-1.8.1-FA --with-bugurl=http://www.arm9.net/ --disable-sjlj-exceptions --enable-__cxa_atexit --disable-
libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-
mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-
Opencv2.0移植ARM(Cortex A8)全过程by HDU刘秀14年9月10日
ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-
cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-
mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-
libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static --enable-threads=posix --with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.5.1 (ctng-1.8.1-FA)
至此交叉编译链安装完成。
注意:配置环境变量的时候需要在root用户下进行操作,在ubuntu11.04之前都不能用root用户直接登录,可采用terminal下登录root进行环境变量的修改。
二、交叉编译libjpeg
版本jpegsrc.v6b,这些库都可以从官网上下载的。
1. 解压进入目录
2. 配置选项:
$./configure Cprefix=/home/liuxiu/opencv-arm Cexec-prefix=/home/liuxiu/opencv-arm
C-enable-shared --enable-static
下面分别介绍这几个参数的作用:
--prefix=/home/liuxiu/opencv-arm : 执行 make install 后,会将与体系无关的文件拷贝到此目录下,具 体如下:
/home/liuxiu/opencv-arm ....................................
+---include........................................
---jconfig.h
---jerror.h
---jmorecfg.h
---jpeglib.h
+---man............................................
+---man1.......................................
---djpeg.1
---jpegtran.1
---rdjpgcom.1
Opencv2.0移植ARM(Cortex A8)全过程by HDU刘秀14年9月10日
---wrjpgcom.1
--exec-prefix=/home/liuxiu/opencv-arm : 执行 make install 后,会将与体系无关的文件拷贝到此目录 下,即将一些可执行程序、动态链接库和静态链接库拷贝到此目录的相应目录下,具体如下:
/home/liuxiu/opencv-arm .......................................
+---bin............................................
---jpegtran
---rdjpgcom
---wrjpgcom
+---lib...........................................
---libjpeg.la
---libjpeg.so
---libjpeg.so.62
---libjpeg.so.62.0.0
修改生成的 Makefile 文件:
# The name of your C compiler:
CC= gcc 该成 CC= arm-linux-gcc
# library (.a) file creation command
AR= ar rc 该成 AR= arm-linux-ar rc
# second step in .a creation (use &touch& if not needed)
AR2= ranlib 该成 AR2= arm-linux-ranlib
在/home/liuxiu/opencv-arm
目录下建立 man/man1,include,lib,bin 四个目录(好像是jpeg中Makefile不能创建这些目录)
3. 编译安装
$ make install
注意:编译成功后可到opencv-arm文件中查看相应的文件
三、交叉编译 yasm ,x264,xvid,ffmpeg
交叉编译 yasm
版本:yasm-0.7.2
1. 解压进入当前目录
Opencv2.0移植ARM(Cortex A8)全过程by HDU刘秀14年9月10日
2. 配置选项:
$ ./configure --enable-shared --prefix=/home/liuxiu/opencv-arm --host=arm-linux
3. 编译安装
$ make install
交叉编译x264
版本:x264-snapshot-5
1. 解压进入当前目录
2. 配置选项:
$ ./configure --prefix=/home/liuxiu/opencv-arm --enable-pic Cenable-shared --cross-prefix=arm-linux- --host=arm-linux --extra-cflags=-I/home/liuxiu/opencv-arm/include --extra-ldflags=-
L/home/liuxiu/opencv-arm/lib --enable-shared --enable-pthread Cdisable-asm
./version.sh: 行 2: git: 未找到命令
avs input:
lavf input: no
ffms input: no
mp4 output: no
visualize:
3. 编译安装
$ make install
交叉编译 xvid
版本:xvidcore-1.1.3
1. 解压并进入build/generic
2. 配置选项:
$ ./configure --prefix=/home/liuxiu/opencv-arm Cdisable-assembly
3. 编译安装
$ make install
交叉编译 ffmpeg
版本:ffmpeg-0.5_p20601
1. 解压并进入目录
Opencv2.0移植ARM(Cortex A8)全过程by HDU刘秀14年9月10日
2. 配置选项:
$ ./configure --cross-prefix=arm-linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc --arch=arm --prefix=/home/liuxiu/opencv-arm --enable-shared --enable-static --enable-gpl --enable-ffmpeg --disable-ffplay --enable-pthreads --disable-yasm --cpu=armv6 --enable-libx264 --enable-libxvid --extra-cflags=-I/home/liuxiu/opencv-arm/include Cextra-ldflags=-L/home/liuxiu/opencv-arm/lib
install prefix
/home/liuxiu/opencv-arm
source path
/home/liuxiu/ffmpeg-0.5_p20601
C compiler
arm-linux-gcc
.align is power-of-two
arm (armv6)
big-endian
runtime cpu detection
ARMv5TE enabled
ARMv6 enabled
ARMv6T2 enabled
ARM VFP enabled
IWMMXT enabled
NEON enabled
gprof enabled
debug symbols
strip symbols
optimizations
postprocessing support
new filter support
filters using lavformat
network support
IPv6 support
threading support
SDL support
Sun medialib support
AVISynth enabled
libdc1394 support
libdirac enabled
libfaac enabled
libfaad enabled
libfaad dlopened
libgsm enabled
libmp3lame enabled
libnut enabled
libopencore-amrnb support no
libopencore-amrwb support no
三亿文库包含各类专业文献、行业资料、应用写作文书、文学作品欣赏、外语学习资料、高等教育、生活休闲娱乐、Opencv2.0移植ARM全过程29等内容。 
 移植openCV2.4.9 到 ARM 开发板上环境:1.ubuntu 16.04 32bit 2.arm-linux-gcc4.3.2 3.openCV2.4.9 4.cmake-gui 步奏: 1.安装 arm-linux-gcc,sudo ...  移植opencv2.0记录_计算机软件及应用_IT/计算机_专业资料。环境 ubuntu10.04 opencv2.0 linux 版 交叉编译环境 arm-linux-gcc-4.3.2 先解压 tar,opencv 配置 open...  opencv2.4.2 移植到 X4412 一、编译环境及库文件 linux 环境:CentOS65 交叉编译:4.5.1 arm 板子:X4412 libz: libjpeg: libpng: libyasm: opencv: libx264:...  opencv2.4.9在Hi3531开发板上移植_计算机软件及应用_IT/计算机_专业资料。Hisi3531移植opencv2.4.9opencv2.4.9 下载不用说了。 Ubuntu12.04 虚拟机安装的+arm-...  OpenCV安装与移植_计算机软件及应用_IT/计算机_专业...OpenCV2.0,以及用 Qt-gui 来替代 highgui 的功 能...ARM 全过程 http://blog.csdn.net/jemofh159/...  下面是 opencv-2.0.0 的移植过程。(简略了解压安装包的过程) 1, 设置环境变量: 代码: 全选 export PATH=$PATH:/usr/local/arm/4.3.2/bin 说明:/usr/local...  davinci/opencv_arm/lib -lcxcore -lcv -lhighgui -lcvaux -lml -lpthread -ldl -lpng -ljpeg -ltiff 若编译不报错且生成 drawing 可执行文件则移植成功。 ...  /mnt/nfs/gtk/lib `pkg-config gtk+-2.0 directfb --cflags --libs` 其中...OpenCV移植到ARM全过程 9页 1下载券 编译OpenCV for Arm-Lin... 2页 免费 ...  OpenCV 移植进 ARM9 处理器中,并实现对火焰图像 ...Qtcreator1.3 OpenCV 版本:2.0.0 ARM 中 linux ...通过视觉方法可以得 到火焰燃烧情况的全方位信息,...1401人阅读
Opencv(4)
在嵌入式平台中,一般来说是使用C语言进行编程,嵌入式系统所使用的编译器也通常对C语言有更好的优化能力,而对C++语言的支持力度不是很大。OpenCV源码采用C、C++混合编程,所有API既可以用C也可以用C++调用。早期的OpenCV大多使用C语言编写,而OpenCV 1.0之后的版本则主要使用C++了。为了适应嵌入式平台,我们在移植时一般选用早期的OpenCV版本,这里选用的即是OpenCV
在移植OpenCV到嵌入式系统中时,有许多需要注意的地方,主要包括两部分:一是内存管理、字节对齐;二是语法问题,主要是指如何修改C++语法和C99版本的C语言语法。具体来说,有以下一些地方需要注意:
(1)内存问题。
我们使用的DM6467是双核架构,ARM+DSP,ARM端运行Linux操作系统,DSP运行DSP/BIOS系统。Linux中对于内存地址使用的是虚拟地址,而DSP没有存储管理器,只能使用物理地址,所以在Linux中分配的连续内存在DSP看来其实是物理上不连续的。因而我们要使用某种方法使得Linux端分配的内存是在物理上连续的,这里使用了CMEM模块来分配连续内存。
要使OpenCV使用CMEM分配连续内存,需要修改OpenCV的内存管理函数cvAlloc()和cvFree_(),这两个函数在cxalloc.cpp文件中,具体的修改办法参见上一周的文档。
(2)C99版C语言语法问题。
C99标准扩展了标准的C语言语法,而OpenCV中部分源码使用了该标准,而我们使用的编译器不支持该标准,所以需要修改响应源码。
在当前的OpenCV中,主要是以下类型代码使用了C99标准:
for ( int i = 0; i & 100; i ++ )
这里的整形变量i并没有在循环体前面进行声明,这在gnueabi-gcc中无法编译,需要修改为以下代码;
for ( i = 0; i & 100; i ++ )
(3)函数形参表。
OpenCV中很多函数在函数声明时设置了默认值,在调用该函数时如果某个参数未设置则使用默认值,如下所示。
函数定义:
/* Finds integral image: SUM(X,Y) = sum(x&X,y&Y)I(x,y) */
CVAPI(void) cvIntegral( const CvArr* image, CvArr* sum,
&&&&&&&&&&&&&&&&&&&&&& CvArr* sqsum CV_DEFAULT(NULL),
&&&&&&&&&&&&&&&&&&&&&& CvArr* tilted_sum CV_DEFAULT(NULL));
函数调用:
cvIntegral( img, sum );
我们使用的编译器不支持这种函数原型声明,也不支持这种参数不够的函数调用,对于以上部分代码需要修改为:
函数声明改为:
CVAPI(void) cvIntegral( const CvArr* image, CvArr* sum, CvArr* sqsum, CvArr* tilted_sum);
或者在头文件中添加以下宏定义:
#define CV_DEFAULT(x)
函数调用:
cvIntegral( img, sum, NULL, NULL );
(4)C++语法问题。
在OpenCV中有很多C++语法的源码,对于这部分代码的修改比较麻烦,必须在理解了代码的基础上才能进行进行修改,否则非常可能改错。在修改时候有两种思路:一是想方设法让代码分支到不包含C++语法的代码段去运行;二是将C++格式的成员变量、方法用C来实现,不过这比较复杂,但有的时候必须这么做。
(5)IPP库和OPENMP。
OpenCV是由Intel发起的,OpenCV中的很多源码都是可以使用Intel处理上优化过的IPP库(以及OPENMP)进行算法加速。OpenCV的代码使得用户在没有安装IPP库时可以使用OpenCV自带的算法来完成运算,在安装了IPP库后可以在编译时自动集成IPP库函数以提高算法运行速度。为了实现用户层的透明,OpenCV中引入了IPPI_CALL()函数,如下所示:
&&&&&&& IPPI_CALL( func( src-&data.ptr, src-&step, ssize, dst-&data.ptr,
&&&&&&&&&&&&&&&&&&&&&&&& dst-&step, dsize, cn, xmin, xmax, xofs, buf ));
对于这部分代码的修改比较简单,只需要跟踪源码找到在没有使用IPP库时OpenCV调用的函数是什么,然后替换掉函数名即可,例如上面的函数调用修改之后为:
icvResize_Bilinear( src-&data.ptr, src-&step, ssize, dst-&data.ptr, dst-&step, dsize, cn, xmax, xofs, yofs, (int *)buf0, (int *)buf1 );
(6)宏定义的问题。
在OpenCV中大量使用宏定义,并且很多宏定义代码非常长并且有些语法比较不常见,需要修改,例如以下这个例子:
#define& ICV_DEF_RESIZE_BILINEAR_FUNC( flavor, arrtype, worktype, alpha_field, &\
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& mul_one_macro, descale_macro )&&&&&&&&&& \
static CvStatus CV_STDCALL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& \
icvResize_Bilinear_##flavor##_CnR( const arrtype* src, int srcstep, CvSize ssize,\
&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&arrtype* dst, int dststep, CvSize dsize,&&&& \
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& int cn, int xmax,&&&&&&&&&&&&&&&&&&&&&&&&&&& \
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& const CvResizeAlpha* xofs,&&&&&&&&&&&&&&&&&& \
&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&const CvResizeAlpha* yofs,&&&&&&&&&&&&&&&&&& \
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& worktype* buf0, worktype* buf1 )&&&&&&&&&&&& \
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& \
&&& int prev_sy0 = -1, prev_sy1 = -1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& \
&&& int k, dx,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& \
修改办法是将其改为函数,如下所示:
static void icvResize_Bilinear( const uchar* src, int srcstep, CvSize ssize,
&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&uchar* dst, int dststep, CvSize dsize,&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& int cn, int xmax, &&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& const CvResizeAlpha* xofs,&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&const CvResizeAlpha* yofs,&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& int* buf0, int* buf1 )&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:120021次
积分:1164
积分:1164
排名:千里之外
转载:39篇
评论:27条
(2)(17)(1)(5)(2)(5)(2)(3)(2)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'opencv在arm和x86上的移植
时间: 23:54:45
&&&& 阅读:649
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&一、开发环境
操作系统:
Opencv版本:
交叉编译工具:
二、安装与配置
Linux系统的安装,交叉的安装还有交叉编译工具的安装,网上说的基本都没什么问题,测试后都可以用。这里安装遇到了一点小问题,按照网上的和开发手册上的安装方法太复杂了,用安装方便又准确。
这篇文章重点还是将如何安装到下,并且配置到中,并实现在和平台上能够顺利运行的程序。为将来做嵌入式模式识别搭建一个快速方便的平台。
小编这里提出自己的问题,希望有缘人如果解决了能够联系我,开始我是安装的版本,安装完成后,编写简单的程序进行交叉编译,但总是编译不通过(这里的安装参考的文库:
移植opencv2.4.2编译arm程序时
arm-linux-g++&-o&opencv_test&opencv_test.cpp&-I&/usr/local/arm/opencv/include/opencv&-L&/usr/local/arm/opencv/lib&-lopencv_core&-lopencv_highgui
出现如下错误:
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:&warning:&../../lib/libcxcore.so,&needed&by&/usr/local/arm/opencv-2.1/lib/libcv.so,&not&found&(try&using&-rpath&or&-rpath-link)
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:&warning:&../../lib/libcv.so,&needed&by&/usr/local/arm/opencv-2.1/lib/libcvaux.so,&not&found&(try&using&-rpath&or&-rpath-link)
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:&warning:&../../lib/libhighgui.so,&needed&by&/usr/local/arm/opencv-2.1/lib/libcvaux.so,&not&found&(try&using&-rpath&or&-rpath-link)
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld:&warning:&../../lib/libml.so,&needed&by&/usr/local/arm/opencv-2.1/lib/libcvaux.so,&not&found&(try&using&-rpath&or&-rpath-link)
读了这边作者的博文:,发现他遇到的和我类似的问题,且尝试了多种方式也没能解决,最终我也和他一样走向了放弃Opencv2.4.2的道路,转向Opencv2.0。其中也尝试了他提供的解决方法,并参考博文:
在交叉编译中LFLAGS即-L换成-Wl,-rpath-link&-Wl,发现这个问题是不见了,但是尽然出现了找不到.so的库文件,我也无语了,这在之前已经解决的问题又回来了,拷贝了库也设置了路径,老问题又出现了,被打回十年前的感觉很痛苦。arm-none-linux-gnueabi缺少这样的库,拷贝过去就行了,发现不行,且这篇文库尼玛是复制的之前好几个博主的文章,原文不动,都不知道有没有试过。没办法只能放弃Opencv2.4.2了。
下面就专心讲讲安装Opencv2.0与遇到的一些问题。
这里的安装我是参考的Opencv中文网(这网站发现很靠谱)
Opencv2.0下载地址:
1、解压文件:
#tar&zxvf&opencv-2.0.0.tar.gz
#cd&opencv-2.0.0
2、检查软件配置
#./configure&--host=arm-linux&--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/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include&LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib&--with-v4l2&--prefix=/opt/x86/opencv&--libdir=/opt/x86/opencv/lib&-includedir=/opt/x86/opencv/include
如果提示有需要的软件未安装,请安装后再运行&命令,直到提示为止。
备注:中已经省去了文件,可以通过安装参考
#make&install
5、更新动态链接库
用用户执行下面的操作
添加路径到文件,然后运行命令
6、测试安装包(在下)
g++&`pkg-config&opencv&--libs&--cflags&opencv`&drawing.c&-o&drawing
这里会出现找不到路径的问题,具体错误如下:
Package&opencv&was&not&found&in&the&pkg-config&search&path.
Perhaps&you&should&add&the&directory&containing&`opencv.pc‘
to&the&PKG_CONFIG_PATH&environment&variable
No&package&‘opencv‘&found
Package&opencv&was&not&found&in&the&pkg-config&search&path.
Perhaps&you&should&add&the&directory&containing&`opencv.pc‘
to&the&PKG_CONFIG_PATH&environment&variable
No&package&‘opencv‘&found
网上有很多解决办法,归结到底就是路径设置问题。
这里我在文件中添加如下路径就可以编译了
export&PKG_CONFIG_PATH=/opt/x86/opencv/lib/pkgconfig:$PKG_CONFIG_PATH
在此编译测试用例,成功后执行命令:
#./drawing
还可以测试其他用例如:
cd&samples/c
chmod&+x&build_all.sh
./build_all.sh
./facedetect&--cascade=&/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml&&--scale=1.5&lena.jpg
以上是版的配置安装
下面是版的配置安装
export&PKG_CONFIG_PATH=/opt/arm/opencv/lib/pkgconfig:$PKG_CONFIG_PATH
第一步,的配置
./configure&--host=arm-linux&--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/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/include&LDFLAGS=-L/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib&--with-v4l2&--prefix=/opt/arm/opencv&--libdir=/opt/arm/opencv/lib&-includedir=/opt/arm/opencv/include
第二步,编译
出现了如下错误:
../3rdparty/.libs/lib_clapack.a(dlasyf.o):&could&not&read&symbols:&File&in&wrong&format
解决方法:删除3rdparty/.libs/lib_clapack.a这个文件,make&clean&后重启make编译。
第三步,安装
Make&install
安装成功后,在和目录下会生成很多文件。
第四步,测试
arm-linux-gcc&&&test.c&-o&test-arm&&-I/opt/arm/opencv/include/opencv&&-L/opt/arm/opencv/lib&-lml&-lcvaux&-lhighgui&-lcv&-lcxcore&&-lpthread&-lrt&
移植到上运行时的错误:
OpenCV&Error:&Unspecified&error&(The&function&is&not&implemented.&Rebuild&the&library&with&Windows,&GTK+&2.x&or&Carbon&support.&If&you&are&on&Ubuntu&or&Debian,
install&libgtk2.0-dev&and&pkg-config,&then&re-run&cmake&or&configure&script)&in
cvNamedWindow,&file&highgui/window.cpp,&line&100
这里说明已经可调用库进行算法运算了,只是没有一个的平台供使用,下面我尝试用作为这个平台来获取视频。
这篇文章的博主:
在为网友解答的时候说用的是做的视频捕捉,然后再用进行图像处理,最后操作显示处理结果(我这里没有尝试了,感觉应该更方便一些)
这篇文章说是要先于安装:
我用的,没有安装过,但是运行
#pkg-config&--modversion&gtk+-2.0&
可以找到我gtk版本。
#pkg-config&--cflags&--libs&gtk+-2.0
可以查看gtk编译和链接的信息
这里参考的“源码安装gtk”博客:
搞了这么多都没搞清楚gtk到底是干嘛用的,在下面博文中有提到过
出现gtk等那就对了的字样,但还不知道什么意思,如何解决接着就写到qt的配置去了。于是我就先配置qt,这里的qt配置我参照的博文是:
后来我知道gtk其实就是一种gui
运行opencv打开摄像头,不知道是这个博主的qt版本不一样还是写漏了,在运行时提示Qdebug运用错误,找到代码F1进入函数文档,发现缺少它的头文件include&&QtDebug&,加上就OK了。
还提示.pro不能找到lib**.so的库,进去查看发现配置的时候多了一个空白行,意思就是libs+=的lib库添加多行一定要加“\”,我多了一个空白行。
在运行就出现“error!”
查看代码中这是Qdebug的错误提醒,我直接修改成“error:can&not&open&camero!”。这样就一目了然了。
解决办法当然就是插入摄像头了。
在编译运行,头像出现了
下面就看如何移植到arm上了。
修改为版的头文件和库文件编译自己的小程序,这个之前编译生成的,我分别用和区分开来的。
重新编译,然后拷贝到开发板上运行。
头疼的事情出现了,出现段错误。麻烦了,解决方法博文
中有提到一点,但是不适合我的程序,他只是先是一张图片将自带的函数换成的。
最后在博文:
提到的评论中,一个女娃告诉他将中的设置成就了,试了下真可以,尽然成功了,到目前也还不知道代表啥意思。
运行结果如下:
到目前为止,发现基本已经调通了这整个平台的环境搭建。
下面尝试运用了一下他的算法,做了个人脸检测。
也遇到了一些问题如:
编译版本的程序,运行无问题。但是在编译版本的程序时,出现错误
解决办法:进入工程目录执行,清理一下在编译就了。
还出现的错误,我猜的可能是这个函数在平台下确实有点问题吧,我就注释了,因为只是个等待函数,最后运行成功了,但是视频变得有点卡,不像在下运行那么顺畅,难道是我注释了的原因,还要继续优化。
贴上结果图片:
&标签:&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 opencv arm64 的文章

 

随机推荐