DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
交叉编译opencv2.3.1,并在DM8168 cortex A8中执行图像处理。
开发环境:
PC:ubuntu12.04LTS。Intel Core 2 Duo CPU E7200@2.53GHZ;
目标平台:SEED DVS DM8168 DVRRDK 02.00.XXXX
第一篇:OpenCV交叉编译
參考了http://blog.csdn.net/embeddedman/article/details/7416934
1.安装交叉编译链
使用DVRRDK中的ti_tools/cgt_a8/arm-2009q1/bin/arm-none-linux-xxx
需将其增加环境变量:能够加到用户文件夹下的.bashrc或/etc/profile
格式例如以下:
export PATH=/...../bin:$PATH
2.获得OpenCV源代码,本文基于2.3.1
3.安装cmake cmake-gui
4.建立编译文件夹如/opencv231/build_arm
5.进入文件夹运行cmake-gui
选择源码文件夹:/opt/OpenCV-2.31
选择Build文件夹:/opt/opencv2.3.1_forArm,大家依据自己的喜好设置编译文件夹吧。
点击Configure,保持generator为Unix Makefiles。选择Specify options for cross-compiling,点击Next
Operating System填写arm-inux
C Compilers选择DVRRDK_02.00.00.23/ti_tools/cgt_a8/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
C++ Compilers填写.......-g++
程序库的Target Root填写OpenCV安装文件夹,然后点击Finish
上面标注的表示opencv将要安装的文件夹,默觉得/usr/local,为了便于管理,大家能够安装在自己设定的文件夹下,能够改动,同一时候。网上资料说:另外,我没有安装tiff图像的支持,因此去掉WITH_TIFF(出自:http://blog.csdn.net/eagelangel/article/details/7232364)。在此点击Configure,然后点击Gennerate就会生成Makefile。
进入/opt/opencv2.3.1_forArm文件夹。运行make命令,就会编译opencv,编译过程中遇到例如以下错误:
In file included from /opt/OpenCV-2.3.1/modules/flann/src/precomp.hpp:9,
from /opt/opencv2.3.1_forArm/modules/flann/opencv_flann_pch_dephelp.cxx:1:
/opt/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h: In function 'T cvflann::abs(T) [with T = long double]':
/opt/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h:63: error: 'fabsl' was not declared in this scope
make[2]: *** [modules/flann/CMakeFiles/opencv_flann_pch_dephelp.dir/opencv_flann_pch_dephelp.obj] Error 1
make[1]: *** [modules/flann/CMakeFiles/opencv_flann_pch_dephelp.dir/all] Error 2
make: *** [all] Error 2
解决方法:改动OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h文件第63行的源代码:将absl()改动为abs()
假设编译过程遇到例如以下错误:
Linking CXX executable ../../bin/opencv_test_calib3d
../../lib/libopencv_core.so: undefined reference to `pthread_key_create'
../../lib/libopencv_core.so: undefined reference to `pthread_getspecific'
../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete'
../../lib/libopencv_core.so: undefined reference to `pthread_once'
../../lib/libopencv_core.so: undefined reference to `clock_gettime'
../../lib/libopencv_core.so: undefined reference to `pthread_setspecific'
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_test_calib3d] Error 1
make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2
make: *** [all] Error 2
解决方式:改动/opt/opencv2.3.1文件夹下的CMakeCache.txt。CMAKE_EXE_LINKER_FLAGS原来为空。加上-lpthread -lrt,假设没有自己加上。
注意:每次错误产生。经改动后。仅仅要再次运行make命令就接着编译,编译成功后,运行make intall命令就会安装opencv。
因为本人的安装文件夹为:/opt/opencv2.3.1_arm,大家能够看到生成了bin、lib、include等文件夹,例如以下:
第二篇
执行
1.将以上文件夹lib include是必须的拷贝的板子上。文件夹能够随意,也能够放到系统动态库文件夹。关于这两点能够參考:
http://blog.chinaunix.net/uid-23215128-id-2521319.html
一个演示样例代码:
#include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { IplImage* pImg; //声明IplImage指针 //加载图像。强制转化为Gray if( argc == 3 && (pImg = cvLoadImage( argv[1], 0)) != 0 ) { IplImage* pImg2 = cvCreateImage(cvGetSize(pImg), pImg->depth, pImg->nChannels); cvCopy(pImg, pImg2, NULL); cvSaveImage(argv[2], pImg2);//把图像写入文件 cvReleaseImage( &pImg ); //释放图像 cvReleaseImage( &pImg2 ); //释放图像 return 0; } return -1; }
採用下面命令方式在pc上进行编译,当然编译时所连接的库是arm版的:
arm-none-linux-gnueabi-g++ test.cpp -o main1 -I/usr/local/arm/opencv/include/opencv -I/usr/local/arm/opencv/include -L/usr/local/arm/opencv/lib -lpthread -ldl -lrt -lopencv_core -lopencv_highgui
(文件夹可能有所不同)
假设PC中 arm的库的路径与lib在板子上的路径不一致的话,运行程序会提示找不到库,这时能够通过板卡设置export LD_LIBRARY_PATH= 使程序能够搜索到库。
另外最好将板子上opencvlib的文件夹见一个软连接到/usr/lib.
2.运行
./
结论:
终于执行结果:cvSplit cvMin cvCreateImage等等的操作,大概是台式机PC的1/40的速度。
计划:与DSP联合运算。
DM8168 OpenCV尝试与评估(编译ARM版OpenCV)相关推荐
- android+busybox+编译,Android版busybox编译
Android版busybox编译 1下载busybox源码 2解压 tar -xvf busybox-1.23.2.tar.bz2 3 android版的配置脚本 解压后的源码里,configs文件 ...
- DM8168 --交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)
因实际项目需求,需将Qt编译成LINUX-ARM版,以下为整个操作过程,使用Qt编写的程序已在实际开发板上运行,在此贴出,但愿能为需要的朋友提供上帮助. 准备工作: Linux内核版本: ...
- opencv实战从0到N (19)编译vc10版opencv3.3.1
编译vc10版opencv3.3.1 1,下载opencv3.3.1的Sources源码:https://opencv.org/releases.html 2,下载并安装Cmake工具:https:/ ...
- windows 环境下,编译android 版opencv-4.5.5,并添加opencv_contrib-4.5.5 扩展模块
参考博客:(130条消息) windows10 vs2019 版本:cmake将 opencv_contrib-4.5.5 扩展模块编译添加到 opencv-4.5.5 正式版中_Chhjnavy的博 ...
- 《计算机组成与设计(ARM版)》读书笔记-第二章指令2
文章目录 2.9 人机交互 2.10 LEGv8中的宽立即数和地址的寻址 2.10.1 宽立即数 2.10.2 分支中的寻址 2.10.3 LEGv8寻址模式总结 2.10.4 机器语言解码 2.11 ...
- 树莓派蓝屏_树莓派刷写Windows 10 ARM版后成功运行桌面程序
微软在2015年时推出Windows 10 IoT物联网版供树莓派系列以及其他单板电脑安装和部署更多的应用程序. 不过树莓派系列设备本身都是使用博通的ARM处理器,所以也只能运行Windows 10商 ...
- 树莓派安装win10arm linux,在树莓派3B 上安装 Windows 10 ARM 版的方法
早先关注我们的朋友可能对<国外开发者尝试在树莓派3上运行Windows 10桌面版>有印象.本文转自 amatfan.com,文末视频来自 daveb778(感谢柠栀和刺分享),给出了如何 ...
- apache arm 交叉编译_移植apache2 ARM版 – 交叉编译apache2 | 学步园
下载apache2 http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.6.tar.bz2 1. tar jxvf httpd-2.4.6.t ...
- python win10 arm_windows10 arm版下载-windows10arm镜像64位中文版 - 极光下载站
windows10arm手机版是微软与高通合作后推出的arm芯片的专属微软系统,该系统可以运行exe文件,类似于桌面端,arm作为未来系统发展方向,为用户提供了移动手机办公的可能性. windows1 ...
最新文章
- linux大小写敏感 mysql_MySQL大小写敏感问题和命名规范
- 牛刀小试、用SharePoint 实现请假管理功能
- 07树莓派下的浏览器
- SQL SERVER中查询无主键的SQL
- JAVA异常分类和处理
- sql参数化查询避免注入漏洞的原因探析
- nginx 配置入门 进行跨域
- 包括8个html的网页设计作品,8个超棒的HTML5网站设计欣赏
- matlab 泊松分布作图,matlab用一组数据画泊松分布图
- hibernate(lazy加载)的意思
- js中math常用使用方法
- Qt开发QtQuick程序在编译时报错:0x00007FFE4E60BB6B (ig9icd64.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFF
- 有关计算机活动英语作文,有关电脑的英语作文
- 救灾帐篷惊现高档小区
- confirm的意思中文翻译_confirm是什么意思_confirm怎么读_confirm翻译_用法_发音_词组_同反义词_[法]确认_批准-新东方在线英语词典...
- “无人驾驶汽车系统入门”博客专栏
- 【NiFi系列】1-基本介绍
- igmp组播实验 @yx
- 如何用关键字优化网站?
- 你了解HashMap吗?
热门文章
- jquery--call()amp;apply()函数
- oracle ohs是什么,怎么更改OHS端口为80
- 漏洞payload 靶机_【CS学习笔记】5、如何建立Payload处理器
- html二级下拉导航,html -----二级下拉导航的实现(常用)
- java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
- 全国大学生智能汽车竞赛 --智慧物流创意组
- 2021年春季学期-信号与系统-第六次作业参考答案-第二小题
- 2021年春季学期-信号与系统-第四次作业参考答案-第五小题
- 2021年春季学期-信号与系统-第三次作业参考答案-第五道题
- 一些极其简易的自动巡线车模