zoukankan      html  css  js  c++  java
  • zedboard开发板上移植opencv代码(立体匹配)

    前言

       公司要做立体匹配相关的项目,已有matlab和c++版本,可是不能做到实时显示立体信息,想要硬件实现实时,无奈本渣也是个硬件的新手,先按照实验室lyq同学的思路在zedboard开发板的纯ARM核里跑代码,嵌入式的实现过程是:硬件平台是zedboard开发板,运行的是里面的ARM-A9硬核,在里面运行的是ramdisk系统它是基于Linux的,软件使用的就是在Linux上,移植opencv到zedboard上面,在虚拟机linux系统下编译代码,再zedboard上面运行就行了。其中,ramdisk是ARM-A9硬核的运行系统。在编译的过程中,需要先配置opencv环境,而且需要将opencv的配置环境的镜像文件移植到zedboard开发板(挂载opencv库)。

    移植过程:

    1.搭建VMware虚拟机系统,配置交叉编译环境,配置opencv库,制作opencv配置环境的镜像文件,镜像文件中是移植好的opencv库;

    2.需要将整个算法过程进行编译(不一定要使用QT,也可以直接使用cmake),生成.o文件,注意:这个过程中由于LYQ移植库的时候没搞好,不能是彩色图,只能是单色bmp图像格式(画图工具另存为单色bmp图像);

       将算法整个过程需要用到的文件copy到sd卡或者U盘,包括opencv库的镜像文件、输入图像、编译生成的.o文件;

    3.下载串口调试工具

        下载了很多串口调试工具,最后只有SecurtCRT管用,需要生成注册码,参考网站:http://download.csdn.net/detail/cwb417/8580615

         非常好用,之前已经下载的有这个软件,试用期过后必须使用注册码,在网上试了好多方法都不行,把这个下载下来按照注册机文件夹的readme的步骤来做,一下子就好了;注意:patch之后生成注册信息,然后打开pc端SecureCRT 这个软件,按步骤很快就ok啦~~

    4.在嵌入式板子上运行程序

     首先将sd卡或者u盘挂载到开发板的系统上,创建/usr/local/lib,将库文件加载到/usr/local/lib文件夹下,运行.o文件,最后得到结果(得到的是代码运行的时间)。

    整个过程中遇到的问题:

    1.打开SecureCTR,选择正确的com口,串口参数设为波特率115200、数据位8、停止位1、校验无。

    2.1)开发板的SD卡启动的引脚设置(Zedboard的连接和短路块设置)

        

         

    2)SD卡的读写模式:lock表示sd卡被写保护;在代码的运行过程中,出现内存区域为只读模式,不能在sd卡上运行代码;sd卡的名称;

    原因:sd卡是只读模式,运行代码的区域是冲突区域;之后改用u盘进行文件挂载;

    3.代码使用的图像和.o文件在同一个文件夹下

    4.mount时候出现device or resource busy的问题

         原因:设备号冲突
        通过命令行 cat /proc/devices可以查看当前系统已经分配的设备号;
    5.编译sm.o时发生错误,说是没有libopencv_core.so.2.4这个文件,可是通过ls命令可以查看到该文件,为什么?
       

    解决方法:

    原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可;
    另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.
    一般没有权限的时候使用 可以export一个全局变量 
    LD_LIBRARY_PATH

    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    顺便说一句,如果目前的库是高版本的,xxx.so.5 但是程序报错是xxx.so.4 找不到,可以做一个软链接,因为一般都是可以向下兼容的

    ln -s /usr/local/lib/xxx.so.5 /usr/local/lib/xxx.so.4
    6.运行程序时候说输入图像错误:input image error
       由于opencv库配置的问题,输入图像应该是单色bmp格式;
    7.镜像文件中没有libavcodec.so.56这个文件,运行./sm_png.o时出现这个问题
       
    解决方法:下载该文件,将该文件加载到库文件夹下;
    8.需要在虚拟机中重新编译生成sm.o文件,运行的代码是重新编译的.o文件,否则会产生错误;
    9.linux系统的命令以及对系统的熟悉和学习需要加强;
     
    终于暂时搞定啦~~~~~

    疑问:

    1.cd /mnt; mount ./opencv_lib.img /usr/local/lib 

     为什么是将img镜像文件挂载到绝对路径下,而不是直接copy过去?
     参考
  • 相关阅读:
    一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(6)--关键点
    一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(5)--添加筛选器到业务连接服务外部内容类型
    一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接
    cmake增加编译宏
    cmake 添加头文件目录,链接动态、静态库
    【学习cmake】cmake如何使用链接库 (link_directories, LINK_LIBRARIES, target_link_libraries,FIND_PACKAGE)实践篇2
    心得体悟帖---201111(moderate)
    matplotlib画箭头
    matplotlib画图xticks设置为字母
    matplotlib画图的颜色及线条详解
  • 原文地址:https://www.cnblogs.com/happyamyhope/p/5387359.html
Copyright © 2011-2022 走看看