OpenCV是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式Linux环境上。本文介绍了OpenCV交叉编译的基本步骤。

一、编译环境及库文件

linux环境:ubuntu12.0

交叉编译:4.3.2

arm板子:全志A10

libz:        zlib-1.2.3

libjpeg:       jpegsrc.v7

libpng:       libpng-1.5.10

libyasm:       yasm-1.2.0

opencv:        opencv-2.4.2

libx264:       x264-snapshot-20120608-2245

libxvid:       xvidcore-1.3.2

lffmpeg:       ffmpeg-0.10.3

cmake:         cmake-2.8.8-Linux-i386.tar,gz

二、opencv-2.4.2的移植过程

1、libz的交叉编译:

# ./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --shared

修改makefile

CC=arm-linux-gcc

LDSHARED=arm-linux-gcc

-shared -Wl,-soname,libz.so.1

CPP=arm-linux-gcc

-E

AR=arm-linux-ar

rc

RANLIB=arm-linux-ranlib

#make

#make install

2、libjpeg的交叉编译:

#./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static

#make install

3、libpng的交叉编译

#./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static

#make

#make install

4、yasm的交叉编译:

#./configure --host=arm-linux --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --enable-static

#make

#make install

5、libx264的交叉编译:

#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi

#make

#make install

6、libxvid的交叉编译:

#cd build/generic

#./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --host=arm-linux  --disable-assembly

#make

#make install

7、ffmpeg的交叉编译:

#./configure --prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi --enable-shared --disable-static --enable-gpl --enable-cross-compile --arch=arm --disable-stripping --target-os=linux --enable-libx264 --enable-libxvid --cc=arm-linux-gcc --enable-swscale

(如果报错libx264 not fount 就--enable-libx264 --enable-libxvid 给去掉继续make)

#make

#make install

8.cmake-gui安装

到官网上下载已经编译好的cmake-2.8.8-Linux-i386.tar.gz,解压就可以了

(若出现cmake-gui:libSM.so:connot open shared objectf file!

安装 sudo apt-get install ia32-libs)

会生成一个图像界面 所以source CRT输入会报错 not connect x server;  要在ubuntu下运行cmake-gui 因为CTR不支持图像界面

9、opencv2.4.2的交叉编译:

用到的主要目录说明:

交叉编译工具链所在目录     /opt/FriendlyARM/toolschain/4.5.1/

安装opencv的目录         /usr/local/

opencv源码所在目录          /home/6410/opencv/opencv-2.4.2/

编译好的opencv库所在目录      /home/6410/opencv/opencv-2.4.2/build

#mkdir build

#cd build

#cmake-gui

选择源代码目录/home/6410/opencv/opencv-2.4.2/

选择Build目录:/home/6410/opencv/opencv-2.4.2/build

点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next,

Operating System填写arm-linux

C Compilers填写opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-gcc

C++ Compilers填写opt/FriendlyARM/toolschain/4.5.1//bin/arm-linux-g++

程序库的Target Root填写opt/FriendlyARM/toolschain/4.5.1/

然后点击Finish。

默认安装目录为/usr/local,点击Generate生成Makefile。

#make

错误一:

Linking CXX executable ../../bin/opencv_createsamples

../../lib/libopencv_core.so: undefined reference to `clock_gettime'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'

../../lib/libopencv_core.so: undefined reference to `pthread_key_create

解决方法:

修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除

错误二:

Linking CXX executable ../../bin/opencv_createsamples

../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy'

../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp'

../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemset'

解决方法:修改CMakeCache.txt,WITH_TIFF:BOOL=ON,改成OFF,重新编译,错误消除。

#make install

三、测试

测试程序:

#include #include #include int main(int argc,char **argv)

{

CvCapture* capture = NULL;

IplImage* frame = NULL;

if(!(capture = cvCaptureFromCAM(-1)))

{

fprintf(stderr, "Can not open camera./n");

return -1;

}

cvNamedWindow("video", 1);

while(frame = cvQueryFrame( capture ) )

{

cvShowImage("video", frame);

}

cvDestroyWindow("video");

cvReleaseCapture(&capture);

return 0;

}

编译:

#arm-linux-g++ -o opencv_test opencv_test.cpp -I /usr/local/include -L /usr/local/lib -lopencv_core -lopencv_highgui -lpthread -lrt

单个opencv的make就花了大概1个半小时,终于成功了,但是这只是开始,要想运用opecv+qt+x264+ffmpeg做东西,这还需要更长远的学习啊

opencv 全志_成功移植opencv2.4.2到全志A10带测试程序相关推荐

  1. 【OpenCV学习笔记2】OpenCV 完全安装 新增VS2010+OpenCV2.1,新增VS2010+OpenCV2.3.1

    OpenCV 完全安装 SkySeraph  Jun.1st 2010  HQU zgzhaobo@gmail.com  452728574 Latest Modified Date:Dec.12nd ...

  2. OpenCV将现有算法移植到G-API的实例(附完整代码)

    OpenCV将现有算法移植到G-API的实例 OpenCV将现有算法移植到G-API的实例 OpenCV将现有算法移植到G-API的实例 #include "opencv2/opencv_m ...

  3. 在vs2019上配置opencv,百分百成功

    在vs2019上配置opencv,百分百成功 文章目录 在vs2019上配置opencv,百分百成功 一.下载opencv 二. 配置系统环境变量 1.搜索环境变量 2.高级->环境变量 3.点 ...

  4. uboot成功移植到STM32F103ZET6(二)

    接上一贴:uboot成功移植到STM32F103ZET6(一) 软件平台:IAR for ARM 7.70 硬件主板:浩宇电子STM32F103ZET6最小系统板 STM32库:HAL库 uboot版 ...

  5. uboot成功移植到STM32F103ZET6(一)

    接上一贴:uboot成功移植到STM32F103ZET6(硬件资源说明) uboot成功移植到STM32F103ZET6(硬件资源说明)_佛山林峯的博客-CSDN博客_stm32 uboot 软件平台 ...

  6. 开源物联网通讯框架ServerSuperIO,成功移植到Windows10 IOT,在物联网和集成系统建设中降低成本。附:“物联网”交流大纲...

    [开源]C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 一.概述 经过一个多月晚上的时间,终于把开源物联网通讯框架ServerSuperIO成功移植到Windows10 IOT上, ...

  7. OpenCV在G-API上移植各向异性图像分割

    OpenCV在G-API上移植各向异性图像分割 在G-API上移植各向异性图像分割 介绍 快速入门:使用OpenCV后端 检查calcGST() 运行G-API图 G-API初始版本:完整列表 检查初 ...

  8. 微软在 ARM 上成功移植 OpenJDK for Windows 10

    去年微软宣布收购 jClarity,用在了 Azure 上的 Java 工作负载,以平台之势加大了对 Java 的支持,而近期,开发团队完成了在基于 Arm(AArch64)的设备上移植适用于 Win ...

  9. 电视root工具_TapTap | 无需Root,成功移植 IOS14,拿下!!!

    点击上方蓝色字关注我们~ IOS14已经更新了,近期大家关注度比较高的就是IOS14上更新的一些新的操作功能体验,像是通过敲击手机背部来完成截屏.返回主屏幕等多项操作,相信作为安卓用户也看的眼馋了,今 ...

最新文章

  1. 【ok】李宏毅机器学习12: 对称矩阵
  2. BZOJ 4002--有意义的字符串(矩阵乘法)
  3. 一些常见的兼容性问题
  4. 计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF
  5. textureview 缩放_View的双指缩放以及移动
  6. SpringBoot —— @ComponentScan注解
  7. vector 不初始化时什么状态_练车时,教练为什么不给你开空调?
  8. 千兆交换机下面可以接多少层交换机_高清监控怎么选配交换机
  9. 双系统重装win7/Xp后如何恢复ubuntu引导--转载
  10. eNSP中AC用Web方式登录
  11. Oracle用户可要顶住了:准备好大规模补丁工作!以修补多达 433 个的新安全漏洞...
  12. 计算机视觉的算法SIFT算法详细介绍
  13. UML(thinking in uml 学习)--参与者和业务工人和涉众
  14. 论文阅读--异常检测中实时大数据处理的研究挑战
  15. HCNE复习参考(中)
  16. 程序员成长的10条体会
  17. ASCII字符和16进制字节数据互转
  18. 电脑连WiFi怎么查看密码是多少
  19. [置顶]封闭环境下的人性博弈——长文纪念诺兰的蝙蝠侠三部曲
  20. 这笔投资你算过吗?―写给二本院校的苦逼青年

热门文章

  1. 索佳电子水准数据传输软件_索佳SET数据编辑通讯程序
  2. windows系统打开conf文件
  3. 包python_Python 包的发布
  4. bpsk传输系统实验matlab,通信原理实验4 BPSK系统仿真matlab程序
  5. C8051F340之USB简介
  6. 迅为RK3399开发板基于RTL8822CS模块Android7移植WiFi
  7. JavaWeb学习之HttpServletRequest
  8. 影院服务器可以给投影机信号吗,工程投影机能否在家里使用?能实现家用影院吗?...
  9. 西门子精简/精智触摸屏(HMI)U盘记录历史数据的注意点
  10. AD7656前端和电源设计