迅为iTOP-4412开发板图像识别项目实战-移植opencv(四)

 

因为我要用opencv获取摄像头并拍照,这里我使用的是opencv来实现的,同时也方便大家以后对opencv的学习,所以我们要先编译opencv库。

环境:迅为提供的ubuntu16.04

编译器:arm-linux-4.4.1.tar.gz

opencv 版本:opencv-2.4.9.zip

平台:迅为iTOP-4412开发板

 

 

.安装编译器

arm-linux-4.4.1.tar.gz拷贝到ubuntu的/usr/local/arm下面并解压,如下图所示:

 

 输入命令 vi ~/.bashrc 打开环境变量,添加以下环境变量并注释掉2014的环境变量,如下图所示:

 

更新一下环境变量,如下图所示,使用命令“source .bashrc ”更新环境变量,并重启ubuntu。

 

 

重启成功后,输入arm,双击tab,如果显示只有一个4.4.1则正确,如果显示还有其他版本则不正确。如下图所示:

 

 

.opencv 移植

  将文件中提供的“opencv-2.4.9.zip”即 opencv 源码包解压,并将其移至 ubuntu 下,作者将该文件放入了“/home/baidu/opencv”下,如下图所示:

 

输入命令unzip opencv-2.4.9.zip 解压并进去解压生成的文件夹,如果没有unzip这个软件可以先使用apt-get命令安装一下。

 

OpenCV 2.2 以后版本需要使用 Cmake 生成 makefile 文件,因此需要先安装 cmake。

ubuntu 下安装 cmake 比较简单,使用命令“apt-get install cmake”和”apt-get install cmake-qt-gui“如下图所示

 

 

 

安装val/v4l2等必要的依赖库,一定要在编译opencv之前安装,否则在编译opencv的时候不会被编译进去。

apt-get install v4l2ucp v4l-utils libv4l-dev

使用命令“cmake-gui”打开 cmake 的 gui 界面,开始进行配置。如下图示所示

 

我们在“where is the source code”中填入电脑中 opencv 源码的位置,“where tobuild the binaries”填入生成 make 编译文件的位置,然后点击 configure 按钮。如下图所示。

 

选择最后一项,然后点击 next,如下图所示。

 

 Operating System 选择目标系统“Linux”,Compilers 中选择交叉编译器的 gcc 和g++,如下

/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi-gcc

/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi-g++

Target Root 选择交叉编译器的路径“/usr/local/arm/4.4.1”,include Mode 选择“search only in target root”。点击 finish。如下图所示。

 

此时主界面如下图所示,这时 Cmake 会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,将 CMAKE_INSTALL_PREFIX 改成你想要的路径,作者改成了“/usr/local/opencv-2.4.9”,这里去掉 WITH_TIFF,WITH_CUDA 及 WITH_GTK。如下图所示。

 

设置完成后,点击configure和enerate,并退出。

 

在编译路径/opt/opencv_arm 下就生成了 Makefile。关闭后我们使用“cd /opt/opencv-arm/”命令进入“/opt/opencv_arm”,在执行 Makefile 之前需要修改 CMakeCache.txt 文件的 194 行。使用命令“vi CMakeCache.txt”编辑文本。如下图所示。

 

跳转至 194 行。将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为

“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如下图所示。

 

 编译 libv4l库,将libv4l-0.6.4.tar.gz压缩包拷贝到ubuntu目录,这里作者拷贝到了

/home/baidu/opencv下面,如下图所示:

 

把资料中的videodev.h头文件拷贝拷贝到Ubuntu的/usr/include/linux/下面,如下图所示:

 

进入解压libv4l库生成的目录,打开makefile

 

在顶层Makefile添加以下命令:

CC=arm-none-linux-gnueabi-gcc

 

同样,我们进入libv4l1和libv4l2和libv4lconvert文件夹下,同样每个文件夹对应的makefile里面添加CC=arm-none-linux-gnueabi-gcc

修改完成后,我们回到libv4l-0.6.4下,依次输入以下命令:

mkdir tmp

make

make install PREFIX=$PWD/tmp

编译成过以后,我们进入我们创建的tmp文件夹的lib目录下,输入命令file *.*,查看我们编译的库是否为ARM的,如果是则正确,如下图所示:

 

编译成功以后,输入以下命令把库和头文件复制到交叉编译链里相应的路径中:

cp -r include/*  /usr/local/arm/4.4.1/arm-none-linux-gnueabi/include/

cp -r lib/*  /usr/local/arm/4.4.1/arm-none-linux-gnueabi/lib

如下图所示:

 

      输入以下命令, 再把编译生成的lib库复制到opencv的安装路径下:

cp -r  lib/*  /opt/opencv-arm/lib

如下图所示:

 

输入命令”cd /opt/opencv-arm/“,回到opencv编译目录,输入make,如下所示:

 

编译完成之后。会显示进度为百分之百,如下图所示:

 

编译完成之后。使用指令“make install”编译完成之后。使用指令“make install”

 

我们可以在“/usr/local/opencv-2.4.9/”目录下看到编译生成的库文件。至此,移植工作基本完成。

 

 

 

 关注“迅为电子”公众号,了解更多嵌入式资讯。

转自:topeetboard.com

 

posted on 2020-07-30 13:57  topeet  阅读(593)  评论(0编辑  收藏  举报

导航