OpenCV编译

本文的前提是zynq交叉编译环境设置

  • 下载opencv3.1.0源码,并解压
wget https://github.com/Itseez/opencv/archive/3.1.0.zip
  • 在解压后的目录下新建两个目录:install,build,并新建toolchain.cmake文件,添加如下内容
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-xilinx-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER arm-xilinx-linux-gnueabi-g++)
  • 进入bulid目录进行命令配置,关联toolchain.cmake文件并配置移植OpenCV的安装目录:
cmake -D CMAKE_TOOLCHAIN_FILE=toolchain.cmake -D CMAKE_INSTALL_PREFIX=/home/ubuntu/opencv-/install ../

  注意此处应该更换为自己的实际目录名称。

  • 生成Makefile文件

  执行ccmake ./进行OpenCV配置,将所有WITH开头的选项选成OFF(除了WITH_V4L为ON);按c键进行配置,g键产生Makefile

  • 编译安装

  通过make编译,make install进行安装;安装结束后Zedboard上的OpenCV库已经生成,在install文件夹下。

OpenCV库移植

依次执行下面的命令,可以在指定的目录下生成opencv_lib.img镜像文件,该文件可以在Zedboard上加载使用

cd /home/ubuntu/opencv_zynq/
// 生成镜像的目录

// 镜像的名字opencv_lib.img和大小80M,可以根据实际链接库的大小进行设置
mkfs.ext2 -F opencv_lib.img
chmod go+w opencv_lib.img
mount opencv_lib.img -o loop /mnt
cp /home/ubuntu/opencv3.1.0/install/* /mnt
// 复制相应的库的即将压缩的镜像中
chmod go-w opencv_lib.img
umount /mnt 

移植测试

测试代码,imgshow.cpp:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>   

using namespace cv; 

int main()
{
  Mat img = imread("test.jpg");
    // 创建一个名为 "Pic"窗口
    namedWindow("Pic");
    // 在窗口中显示图片
    imshow("Pic", img);
    // 等待6000 ms后窗口自动关闭
    waitKey();
} 

makefile:

LINK_C = imgshow.cpp
LINK_H = -I /opt/opencv-3.1/include/opencv -I /opt/opencv-3.1/include -I /opt/opencv-3.1/include/opencv2
LINK_LIB = -L /opt/opencv-3.1/lib

target:
    arm-xilinx-linux-gnueabi-g++ -O2 -I./ -o imgshow_arm  $(LINK_C) -Wall -lm -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs  $(LINK_H) $(LINK_LIB)
    #finished make imgshow_arm

编译后生成imgshow_arm.o

将OpenCV库文件opencv_lib.img、可执行文件edge_detection.o和原图像放入U盘中,启动Zedboard,挂载U盘:

mount /dev/sda1 /mnt

将镜像文件opencv_lib.img挂载到/usr/lib文件夹中:

cd /usr
mkdir lib
mount /mnt/opencv_lib.img /usr/lib

运行可执行文件./imgshow_arm.o

opencv3.1.0_arm下载

opencv_lib.img镜像文件

OpenCV在Zedboard上的移植的更多相关文章

  1. OpenCV在ARM上的移植

    OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...

  2. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...

  3. OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...

  4. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题2---CMAKE配置问题

    实际上这里说的是移植的第一步,下载到源码后,我用的是opencv2.4.9,解压缩,然后可以利用cmake-gui来进行configure配置,这里面需要设置交叉编译的工具链,具体的可以参考[Linu ...

  5. 【Linux开发】OpenCV在ARM上的移植

    与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方法很麻烦,不仔细操作很容易出错 ...

  6. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题

    问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/opencv- ...

  7. OPENCV在ARM平台的移植

    两篇别人推荐给我的文章,我想直接复制过来,呵呵,但一想真不好,等我做一遍了再来写一遍.还是贴链接. OpenCV在ARM上的移植:http://www.cnblogs.com/emouse/archi ...

  8. zedboard上移植OPENCV库

    zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指 ...

  9. Qt4.8.5在ARM9上的移植

    Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...

随机推荐

  1. Cocos2d-x学习笔记(18)(TestCpp源代码分析-2)

    本章主要讲controller.h/cpp文件的分析,该文件主要用于演示样例场景管理类TestController,用于显示全部演示样例的菜单. //controller.cpp #include & ...

  2. AngularJS的ng-repeat的内部变量

    代码下载:https://files.cnblogs.com/files/xiandedanteng/angularJSng-repeatInnerVariable.rar 代码: <!DOCT ...

  3. 大牛blog汇总

    系列专题的文件夹 01. Java String系列 (共3篇) 02. Java异常系列 (共3篇) 03. Java 时间日期系列 (共7篇) 04. java io系列 (共26篇) 05, J ...

  4. 高速创建和mysql表相应的java domain实体类

    今天创建了一个表有十几个字段,创建完之后必定要写一个与之相应的java domain实体类. 这不是反复的工作吗?为什么不先把这个表的全部的字段查出来,然后放到linux环境下,用sed工具在每一行的 ...

  5. android 5.X Toolbar+DrawerLayout实现抽屉菜单

    前言  android5.X新增的一个控件Toolbar,这个控件比ActionBar更加自由,可控,因为曾经的ActionBar的灵活性比較差,所以google逐渐使用Toolbar替代Action ...

  6. VueJS标签消息显示HTML:v-html

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  7. Jenkins系列之-—06 Ant构建

    一.Ant 简介&构建环境 Apache Ant 是由 Java 语言开发的工具 构建ant环境: 1). 安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH 2). 下载 ...

  8. Python 模块之 ConfigParser: 用 Python 解析配置文件

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在 Python 里更是如此,在官方发布的库中就包含有做这件事情的库,那就是 ConfigParser,这里简单的做 ...

  9. css3背景及字体渐变

    1.背景渐变: .linear { width: 100%; FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,sta ...

  10. [未完结]数字微分分析法的直线绘制(DDA)

    注意! 本文被第1次更新,可能存在后续更新 直线画法 直线的斜截式方程 在二维空间下,一条直线的方程可以被描述为若干种形式,其中比较常见的一种是斜截式方程: \[y=kx+b\] 其中\(k\)称为直 ...