返回

提问 添加收藏

​​​​​​​opencv 移植到迅为IMX6开发板

本页包含16张图片,默认未加载,显示所有图片

tb9204778_2012 发布于 2019年08月14日 (共有0个回帖)

 

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

一、编译环境及库文件

linux 环境:ubuntu12.04

交叉编译:4.3.2

arm 板子:iMX6开发板

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 --en

#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,保持 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.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(在板子上可以)

点击加载图片

点击加载图片

 

点击加载图片

点击加载图片

点击加载图片

点击加载图片

点击加载图片

点击加载图片

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

LinuxGCCCMakeOpenCV
文明上网,理性发言
客户端 Android iPhone WP7