移植opencv2.4.9到itop4412开发板

OpenCV是眼下开源项目中最著名的基于机器视觉方向的图像处理的开发包,眼下已经有被移植到嵌入式Linux环境上。

本文介绍了OpenCV交叉编译的基本步骤。

在opencv交叉编译之前要先进行依赖库的交叉编译,然后才干进行opencv库的交叉编译(由于opencv依赖于非常多库函数,假设不编译会造成,编译后的opencv无法使用)这里首先给出OpenCV交叉编译时各个库的依赖关系:

OpenCV

|——–zlib

|——–jpeg

|——–libpng

|——–zlib

|——–tiff

|——–zlib

|——–ffmpeg

|——–x264

|——–xvidcore

当中各个源代码包之间的依赖关系还是有一定的讲究,否则非常easy编译努通过,这里建议下载较新的稳定版进行交叉编译,以下列出了本人的配置环境:

一、编译环境及库文件

linux环境:ubuntu12.04

交叉编译:4.3.2

arm板子:iTOP4412开发板

libz:

libjpeg:

libpng:

libyasm:

opencv:

libx264:

libxvid:

lffmpeg:

cmake:

二、opencv-2.4.9的移植过程

1、libz的交叉编译:

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

2、libjpeg的交叉编译:

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

make

make install

3、libpng的交叉编译:

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

make

make install

4、yasm的交叉编译:

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

make

make install

5、libx264的交叉编译:

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

6、libxvid的交叉编译:

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

#

注意:

在继续下一步之前须要拷贝之前编译好的库即每一个-install/lib/下的文件到/usr/local/arm/4.3.2/arm-none-linux-gnueabi/opencv-depend以下不然后面会提示找不到库(多谢群里的朋友反映这个问题)

(–extra-cflags=”-l usr/local/arm/4.3.2/arm-none-linux-gnueabi/opencv-depend”

这个命令制定了依赖库文件夹路径以供configure查找)

#

7、ffmpeg的交叉编译:

./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 –extra-cflags=”-L usr/local/arm/4.3.2/arm-none-linux-gnueabi/opencv-depend”

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,解压就能够了

9、opencv2.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 ../

11.配置cmake-gui

cmake-gui

选择源代码文件夹/usr/local/arm/opencv-2.4.9/

选择Build文件夹:/usr/local/arm/opencv-2.4.2/build

点击Configure。保持generator为Unix 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(由于之前安装了x86的opencv在usr/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.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,

点击Generate生成Makefile。(203行附近有小引號能够带着像这样’-lpthread -lrt’)

make(出现错误通常是选多了或者前面做错了make clean)

make install



12.最后

另一步特别关键 。须要把/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(在板子上能够)

所需依赖库在这里下载

http://download.csdn.net/detail/engineer_wjr/9419761

交叉编译好的依赖库在这里

http://download.csdn.net/detail/engineer_wjr/9419761

时间: 2024-10-25 21:52:56

移植opencv2.4.9到itop4412开发板的相关文章

【分享】iTOP4412开发板-Bluetooth移植文档

最近须要把Bluetooth移植到iTOP-4412 开发平台.查阅了相关资料,经过一段时间的研究.调试,最终成功的将蓝牙功能移植到了开发板上面.这里笔者记录移植过程及注意事项,方便以后工作须要. iTOP-4412开发板的Bletooth模块与板卡之间的连接採用UART接口.Bletooth硬件模块使用的是MTK的MT6620芯片,MTK提供了Android4.0及Android4.4的driver, Porting Guid,有了这些就为我们的移植工作做了整体性的指导. 可是唯独MTK提供的

iTOP-4412开发板-嵌入式平台开机测试

iTOP-4412平台硬件的连接1.核心板和底板的连接 迅为iTOP-4412开发板采用工业级进口板对板连接器,拔插方便稳定可靠,如下图所示. 另外迅为独家提供两种封装的核心板,接口定义完全兼容,如下图所示. iTOP-4412开发平台,核心板和底板可分离.拆分核心板的时候,使用塑料的薄片在核心和底板任意一边轻轻撬动,听到清脆的响声,表明撬动的一边的连接器已经分离,接着依次分离其它三边. 安装核心板的时候,核心板和底板的箭头要指向同一方向,将核心板和底板对齐,然后按压核心板,听到四次清脆的响声,

[转载]在iTOP-4412开发板上调试helloworld应用

本文转自迅为论坛:http://www.topeetboard.com 1.安装ADB驱动 在开发板上调试 Android 应用,首先要安装 ADB 驱动. 通过“SDK Manager.exe”来安装.如下图所示.另外需要注意的是,如果要使用 SDK Manager 安装软件,需要将 Eclipse 关闭. 安装完成后,打开文件夹中“USB_fastboot_tool\platform-tools”的命令行 cmd.exe, 如下图所示,输入命令“#adb”,然后回车.这里集成了 adb 命令

[转载]嵌入式开发板-iTOP-4412开发板LCD的屏幕驱动

平台:iTOP-4412开发板 大家好今天我们来讲一下 iTOP-4412 开发板 LCD 的屏幕驱动, iTOP-4412 开发板支持 4.3 寸, 7 寸, 9.7寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 9.7 寸屏是用的 LVDS 信号,硬件 上 使 用 了 一 个 RGB 转 LVDS 的 芯 片 实 现 的 . 我 们 来 看 下 显 示 驱 动 , 显 示 驱 动 在 内 核 的"drivers/video/samsung&quo

开创学习的四核时代-iTOP-4412开发板开源硬件平台

iTOP-4412开发板如今比較热门的开发板.笔者最近入了一套. 也推荐给初学ARM的朋友学习,4412开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具高速读取与超大容量,独家配备三星S5M8767电源管理.接口丰富.性能强劲. 另外迅为专为开发板刚開始学习的人量身打造的手把手全视频讲义.让高端ARM开发像单片机一样简单. 趁刚刚收到4412,让我们来一起了解一下这款神器. 首先要说的是4412核心板.支持POP .SCP两种封装的核心板,并且兼容同一个底板

学习嵌入式linux开发板之iTOP-4412 开发板如何操作GPIO

本文转自迅为论坛:http://www.topeetboard.com 平台:迅为嵌入式linux开发板 Exynos4412 所有的 GPIO 都有固定的地址,为了方便操作这些 GPIO,Linux 内核 在 gpio-exynos4.h 里面定义了一些 GPIO 的宏,例如: #define EXYNOS4_GPA0(_nr)  (EXYNOS4_GPIO_A0_START + (_nr)) #define EXYNOS4_GPA1(_nr)  (EXYNOS4_GPIO_A1_START 

迅为iTOP-4412开发板Ubuntu操作系统烧写方法

本文转自:http://www.topeetboard.com Ubuntu系统烧写硬件平台:iTOP4412开发板 需要准备:串口线.读卡器.一张SD卡最好是2G(自备).另外一张卡(大于等于2G都可以,也可以使用U盘) 软件平台 Ubuntu操作系统,Windows系统 超级终端 镜像文件和压缩包,在光盘的Ubuntu文件夹中,和其它2种操作系统有区别 Ubuntu烧写步骤 第一步:通过PC机的Ubuntu系统把Ubuntu系统文件解压缩到TF卡里面 第二步:通过TF卡启动Ubuntu系统把

iTOP-4412开发板网盘资料介绍

iTOP-4412开发板网盘视频资料内容如下: 01-烧写.编译以及基础知识视频 02-嵌入式Linux 视频 03-iTOP-4412 开发板硬件设计指导视频 04-Android 应用程序视频 05-Android 应用教程2015 06-裸机程序实验文档以及工具文件 07-Linux-x86-Qt5.3.2 以及QtE4.7.1 应用视频 08-Linux 驱动教程 09-迅为电子Java 教程 10-uboot教程 01-烧写.编译以及基础知识视频: 02-嵌入式Linux 视频: 03

[迅为开发板资料分享]iTOP-4412开发板LCD的屏幕驱动

大家好今天我们来讲一下 iTOP-4412 开发板 LCD 的屏幕驱动, iTOP-4412 开发板支持 4.3 寸, 7 寸, 9.7寸的 lcd 显示屏.其中 4.3 寸屏是用的 cpu 直接出来的 RGB 信号,7 寸屏和 9.7 寸屏是用的 LVDS 信号,硬件 上 使 用 了 一 个 RGB 转 LVDS 的 芯 片 实 现 的 . 我 们 来 看 下 显 示 驱 动 , 显 示 驱 动 在 内 核 的"drivers/video/samsung" 目录下面, 这个驱动是三星