logo资料库

ITOP4412 QT系统移植opencv.pdf

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
iTOP4412_opencv 移植 OpenCV 是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式 Linux 环境上。本文介绍了 OpenCV 交叉编译的基本步骤。 一、编译环境及库文件 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 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 #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 的交叉编译: 用到的主要目录说明: 交叉编译工具链所在目录 安装 opencv 的目录 opencv 源码所在目录 编译好的 opencv 库所在目录 /usr/local/arm/4.3.2/ /usr/local/arm/opencv-install /usr/local/arm/opencv2.4.9 /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 修改选项(如果不改 make 会出现很多错误因为找不到库) /usr/local/arm/opencv-install 去掉 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 ************************************************************************************************ 最后 还有一步特别关键 ,需要把/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(在板子上可以) linux, 嵌入式, Linux, 开发, 项目 02.jpg (25.86 KB, 下载次数: 32) 本主题由 T-Bagwell 于 2016-02-02 13:34 添加图章 精华
分享到:
收藏