opencv2.4.9移植迅为4412开发板文档

2023-11-07 12:10

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

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/363512

相关文章

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析