OpenCV2.0.0 移植 arm-linux-gcc version 4.5.1

来源:互联网 发布:仿有赞微商城源码 编辑:程序博客网 时间:2024/06/14 00:22
前面的部分主要按照这位大牛的博客做的,后面遇到了一点问题
原文:http://blog.csdn.net/gfocean/article/details/6341155
实现的功能:移植opencv-2.0.0到mini6410,利用QT图形库实现人脸检测。在mini6410上利用Video for Linux接口和QT图形库,对摄像头数据进行采集和显示,在利用opencv的函数对采集的一帧图片进行处理。在利用QT图形库进行显示。
开发环境及工具:

ubuntu10.10 gcc version 4.4.5
arm-linux-gcc-4.4.1
qt-4.7.2
opencv-2.0.0

1.开发环境的搭建
主要是交叉编译安装qt-4.7.2和交叉编译安装opencv-2.0.0
他们的配置文件分别是:
(1)qt-4.7.2
./configure -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -qt-mouse-pc -no-gfx-qvfb -no-gfx-vnc -qt-kbd-tty -qt-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -qt-mouse-tslib -no-glib -prefix /usr/local/arm/QtEmbedded-4.7.2-arm-4.4.1 -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18,24 -I/usr/local/arm/tslib/include -L/usr/local/arm/tslib/lib -v -D__ARM_ARCH_5TEJ__
(2)opencv-2.0.0
./configure --host=arm-linux --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --without-gtk --enable-static --disable-shared --disable-apps

配置之后显示
HighGUI configuration ================================================

    Windowing system --------------
    Use Carbon / Mac OS X:    no
    Use gtk+ 2.x:             no
    Use gthread:              no

    Image I/O ---------------------
    Use ImageIO / Mac OS X:   no
    Use libjpeg:              yes
    Use zlib:                 yes
    Use libpng:               yes
    Use libtiff:              no
    Use libjasper:            no
    Use libIlmImf/OpenEXR:    no

    Video I/O ---------------------
    Use QuickTime / Mac OS X: no
    Use xine:                 no
    Use gstreamer:            no
    Use ffmpeg:               no
    Use dc1394 & raw1394:     no
    Use dc1394_v2 & raw1394:  no
    Use v4l:                  yes
    Use v4l2:                 yes
    Use unicap:               no

Wrappers for other languages =========================================

    SWIG                     
    Python                    no
    Octave                    no

Additional build settings ============================================

    Build demo apps           no

Now run make ...
如果大家可以把ffmpeg也编译上,那么编写摄像头采集程序的时候就可以不用写采集的程序了。直接调用opencv的显示函数就可以拉。但是我一直不能把他编译到opencv中,所以就自己写的采集的程序。

然后就是make 和make install拉。祝大家顺利!
但是make install 时出错了
错误如下:
libtool: install: chmod 644 /usr/local/lib/libcxcore.a
libtool: install: arm-linux-ranlib /usr/local/lib/libcxcore.a
../libtool: line 964: arm-linux-ranlib: command not found
make[2]: *** [install-libLTLIBRARIES] Error 127
make[2]: Leaving directory `/home/marcusmu/OpenCV-2.0.0/src'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/home/marcusmu/OpenCV-2.0.0/src'
后来搜索了一下发现是这个问题是由于我先在自己的帐户下export了环境变量,但是root的环境变量没有更改,于是sudo make install的时候就找不到对应的command了。
后来找到了这篇博客,也是大牛啊。http://control.blog.sina.com.cn/admin/article/article_add.php?index
make install时"arm-linux-ranlib command not found" ,和我遇到的是一样的问题,但是他却解决了,就照抄了一下。

Author: wmmwang(unc,王敏敏)
Environment:fedora8
            arm-linux-gcc 3.4.1
Minigui: 1.3.3
Date:2008-11-24

    按照以前经验,把要改的地方改好。接着make,没的问题。
    然后,sudo make install。由于安装到系统目录/usr/local,所以加了sudo执行。就这步,出现了问题:
    ../libtool:line XXXX:arm-linux-ranlib command not found
    在终端检查,发现arm-linux-ranlib可以在系统的PATH中找到,因为我已经把/usr/local/arm/3.4.1/bin添加到了PATH中。

    那为什么还提示说找不到arm-linux-ranlib呢?
原因如下:
    1.我添加arm交叉编译器目录到PATH中是放在~/.bash_profile里的,这是用户的配置文件,我的用户为wmm。
    2.执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。
    根据以上两点,make install是在root下做的,而arm-linux-ranlib在wmm用户的工作环境中才能找到。所以产生了这里的错误。

那我既要取得root权限,又要具有当前用户wmm的工作环境,改怎办呢?
解决如下:
    执行make install之前,先用下su命令取得root权限。然后再执行make install。

su 和 sudo 的区别:
    1.共同点:都是root用户的权限;
    2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。

最后介绍了改root的方法,见博客http://tong646591.blog.51cto.com/1859046/491082

su认证失败的解决方法
Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许“su”到 root。有人说这是个不好的实践,特别是对于服务器来说。我觉得对于桌面用户来说,这样安全性更高一些,是应该的;但对于服务器可以设置成“允许 su 到root,但不允许root用户直接登录”。而我为了开发时的方便,则在桌面和服务器上都采用这种方式。 


◆允许 su 到 root

非常简单,下面是设置的方法: 

me@tipfoo:~$ sudo passwd 

Password: <--- 输入安装时那个用户的密码 

Enter new UNIX password: <--- 新的Root用户密码 

Retype new UNIX password: <--- 重复新的Root用户密码 

passwd:已成功更新密码 

◆允许root登录

如果要 允许root登录(不推荐),则这样操作: 

me@tipfoo:~$ gksu /usr/sbin/gdmsetup 

(或 者使用桌面菜单:系统>系统管理>登录窗口) 

点“安全”选项页,选择“允许本地管理员登录”。 

注:这一步依赖上一 步 

◆不输入密码直接登录 

在论坛上也看见有人抱怨,家中的Ubuntu不能像Window$那样──不用输入密码就能登录。其实同样能做到: 

就在上一步的“安全”选项页中,勾选: 

“启用自动登录”,“用户”选择(如:“me”); 

注 意:公共用的计算机千万不能这么设置! 

◆SSH登录远程服务器 

如果远程服务器只允许root用户SSH到服务器时, 在Ubuntu下,必须“su 到root”用户才能登录成功(具体是看服务器端的配置)。 

首先,复制密钥到“/root/.ssh /”目录, 

me@tipfoo:~$ su 

Password: 

root@tipfoo:/home/me# chmod 600 -R /root/.ssh/ 

root@tipfoo:/home/me# ssh -p 27482 11.22.33.44 

Enter passphrase for key '/root/.ssh/id_rsa': 

Last login: Thu Jun 21 14:29:00 2007 from 11.22.33.45

原创粉丝点击