OpenCV在Zedboard上的移植
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
OpenCV在Zedboard上的移植的更多相关文章
- OpenCV在ARM上的移植
OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题2---CMAKE配置问题
实际上这里说的是移植的第一步,下载到源码后,我用的是opencv2.4.9,解压缩,然后可以利用cmake-gui来进行configure配置,这里面需要设置交叉编译的工具链,具体的可以参考[Linu ...
- 【Linux开发】OpenCV在ARM上的移植
与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方法很麻烦,不仔细操作很容易出错 ...
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题
问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/opencv- ...
- OPENCV在ARM平台的移植
两篇别人推荐给我的文章,我想直接复制过来,呵呵,但一想真不好,等我做一遍了再来写一遍.还是贴链接. OpenCV在ARM上的移植:http://www.cnblogs.com/emouse/archi ...
- zedboard上移植OPENCV库
zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指 ...
- Qt4.8.5在ARM9上的移植
Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...
随机推荐
- nexus启动报错----->错误 1067: 进程意外终止。
1.今天启动nexus报错: 2.错误信息 错误 1067: 进程意外终止. 3.检查发现我之前把jdk升级了. 然而nexus之前指定的jdk将不再生效. 4.解决的方法 找到nexus安装文件夹 ...
- Git以及github的使用方法(一)安装并设置git用户
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Window ...
- Sencha Touch 之初接触
1.Sencha Touch开发与普通web开发有什么区别? Sencha Touch(为方便起见,本文后面一律简写为ST)页面的开发跟普通html页面相比,总体来说没有本质上的区别,只是引入了对ht ...
- 【每日Scrum】第二天(4.23) TD学生助手Sprint2站立会议
站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 昨天觉得整个界面不适合后期功能扩展,所以进行了整体整改 今天主要看了多事件处理的内容然后改了下界面, 遇到的困难就是正在寻找用户交互性比较好的 ...
- swich-----case语句的用法
转: http://xinzhi.wenda.so.com/a/1517927252619839
- 使用".."指定git提交范围与"..."指定git提交范围的区别
http://blog.csdn.net/hansel/article/details/8952967 使用".."(两个点)和"..."(三个点)都可以指定一 ...
- 斯坦福公开课:Developing IOS 8 App with Swift(1-3)心得体会
最近开始学习Swift开发移动程序.跟随斯坦福大学的公开课进行自学. 这真是一个美好的时代,虽然不能在斯坦福求学,但是可以观看录制的授课录像.讲义,好似老师在给我们上课一样! 心得: 1.每节课信息量 ...
- Django-ondelete
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=m ...
- 解压 boot.img
./split_bootimg.pl boot.img Page size: 2048 (0x00000800) Kernel size: 7062084 (0x006bc244) Ramdisk s ...
- 怎样退出App之前唤醒还有一个App?
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 SDK并没 ...