【转载】opencv2.4.9移植迅为4412开发板文档

2023-11-07 12:10

本文主要是介绍【转载】opencv2.4.9移植迅为4412开发板文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文转自:http://www.topeetboard.com

 

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

一、编译环境及库文件

linux环境:ubuntu12.04

交叉编译:4.3.2

arm板子:iTOP4412开发板

 

libz:        

libjpeg:       

libpng:       

libyasm:      

opencv:       

libx264:      

libxvid:      

lffmpeg:       

cmake:       

二、opencv-2.4.9的移植过程

1libz的交叉编译:

# ./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/zlib-install --shared  

修改makefile

CC=arm-linux-gcc

AR=arm-linux-ar

RANLIB=arm-linux-ranlib

CDSHARED=arm-linux-gcc -shared -wl, -soname,libz.so.1,--version-script,zl lib.map (不一样没关系只改前面编译器)

#make 

#make install

 

2libjpeg的交叉编译:

#./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libjpeg-install --enable-shared --enable-static

#make

#make install

 

3libpng的交叉编译:

#./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libpng-install --enable-shared --enable-static 

#make

#make install

 

4yasm的交叉编译

#./configure --host=arm-linux --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/yasm-install --enable-shared --enable-static

#make

#make install

 

5libx264的交叉编译:

#CC=arm-linux-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libx264-install

#make

#make install

 

6libxvid的交叉编译:

#cd build/generic

#./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libxvid-install --host=arm-linux  --disable-assembly

#make

#make install

 

7ffmpeg的交叉编译:

./configure --prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/ffmpeg-install --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

#make

#make install

 

**************************************************************************

到此所有依赖库编译安装完成

安装目录在:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/

每个库有各自的-install文件夹

新建文件夹

#mkdir /usr/local/arm/4.3.2/arm-none-linux-gnueabi/opencv-depend/

然后拷贝所有-install下的lib下的文件到opencv-depend目录下

***************************************************************************

8.cmake-gui安装(自己下载)

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

 

9opencv2.4.9的交叉编译:

用到的主要目录说明:

交叉编译工具链所在目录     /usr/local/arm/4.3.2/

安装opencv的目录         /usr/local/arm/opencv-install

opencv源码所在目录          /usr/local/arm/opencv2.4.9

编译好的opencv库所在目录      /usr/local/arm/opencv-2.4.2/build

 

10.配置cmake(这一步的目的是配置编译器并让cmake-gui找到所有共享库不然cmake-gui会少很多选项因为没有发现依赖库,例如你直接cmake-gui就没有v4l选项,直接导致移植成功后无法打开摄像头,别问我是怎么知道的..说多了都是泪啊)

 

#cd opencv-2.4.9

#mkdir build

#cd build

#vim toolchain.cmake

内容如下

 

###########user defined#############

set( CMAKE_SYSTEM_NAME Linux )

set( CMAKE_SYSTEM_PROCESSOR arm )

set( CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc )

set( CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g++ )

###########user defined#############

set( CMAKE_FIND_ROOT_PATH" /usr/local/arm/4.3.2/arm-none-linux-gnueabi/opencv-depend/ " )

set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )

set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )

set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

######################################

然后执行这一步

#cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ../

 

配置cmake-gui

#cmake-gui

 






 

 

选择源代码目录/usr/local/arm/opencv-2.4.9/

选择Build目录:/usr/local/arm/opencv-2.4.2/build

点击Configure,保持generatorUnix Makefiles(不用改),选择Specify options for cross-compiling(最后一个选项),点击Next,

Operating System填写arm-linux

C Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-gcc

C++ Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-g++

 

程序库的Target Root填写/usr/local/arm/4.3.2/

然后点击Finish

 

默认安装目录为/usr/local,改为/usr/local/arm/opencv-install(因为之前安装了x86opencvusr/local为了避免弄混了)

CMAKE_INSTALL_PREFIX    /usr/local/arm/opencv-install

修改选项(如果不改make会出现很多错误因为找不到库)

 

去掉WITH_CUDA

 

去掉WITH_GTK

 

去掉WITH_1394

 

去掉WITH_GSTREAMER

 

去掉WITH_LIBV4L(后边有v4l这个没用不要选)

 

去掉WITH_TIFF

 

去掉BUILD_OPENEXR

 

去掉WITH_OPENEXR

 

去掉BUILD_opencv_ocl

 

去掉WITH_OPENCL

 

完成后Generate

 

修改CMakeCache.txtCMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt

点击Generate生成Makefile(203行附近有小引号可以带着像这样'-lpthread -lrt')

 

#make(出现错误一般是选多了或者前面做错了make clean)

#make install

************************************************************************************************

最后

还有一步特别关键 ,需要把/usr/local/arm/opencv-install/lib 下所有的动态链接库 拷贝到交叉编译下/usr/local/arm/4.3.2/arm-non-linux-gnueabi/lib

************************************************************************************************

三、测试

 

测试程序:(qt设置)

 

 






 

.拷贝到开发板运行

1./usr/local/arm/opencv-install/lib/下的库拷贝到开发板/lib/下

2.#mkdir /usr/local/arm/opencv-install/lib/

并拷贝上述库到mkdir /usr/local/arm/opencv-install/lib/

3.拷贝opencv-depend下库到开发板/lib/

4.拷贝测试程序到开发板/bin/目录下赋予可执行权限chmod  777 CamaraGet

5. cd /bin/

 ./ CamaraGet –qws &

(如果提示库找不到原因是你编译的库建立了类似快捷方式的东西而你拷贝的库没有拷贝快捷方式所以程序连接的时候找不到快捷方式,可以将你的库改名成提示缺少的库名(快捷方式名)基本上就是去掉版本后缀例如

( mv libopencv_core.so.2.4.9  libopencv_core.so.2.4 )

以下是文件目录示例

 


 




.说明

开发板USB摄像头预览节点是/dev/video4  opencv调cam = cvCreateCameraCapture(204); 这个函数的意思是打开video4网上很多讨论括号里的参数只要有: 0 ,  -1,  202单要根据你自己的情况改,实测204(在板子上可以)



这篇关于【转载】opencv2.4.9移植迅为4412开发板文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363511

相关文章

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

Java利用Spire.XLS for Java自动化设置Excel的文档属性

《Java利用Spire.XLSforJava自动化设置Excel的文档属性》一个专业的Excel文件,其文档属性往往能大大提升文件的可管理性和可检索性,下面我们就来看看Java如何使用Spire... 目录Spire.XLS for Java 库介绍与安装Java 设置内置的 Excel 文档属性Java

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

C#实现插入与删除Word文档目录的完整指南

《C#实现插入与删除Word文档目录的完整指南》在日常的办公自动化或文档处理场景中,Word文档的目录扮演着至关重要的角色,本文将深入探讨如何利用强大的第三方库Spire.Docfor.NET,在C#... 目录Spire.Doc for .NET 库:Word 文档处理利器自动化生成:C# 插入 Word

Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)

《Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)》在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效... 目录重复性文档制作,手动填充模板,效率低下还易错1.python-docx入门:Word文档的“瑞士

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export