OpenCV是一个基于BSD许可(开源)发行的计算机视觉库,广泛应用于跨平台环境,包括Linux、Windows、Android及Mac OS操作系统。作为计算机视觉领域广受欢迎的标准工具包,OpenCV拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux、Windows、Mac等操作系统上流畅运行,并能够快速实现一系列图像处理和识别任务。
此外OpenCV为了增强其通用性和易用性,还提供了Java、Python、CUDA等的使用接口、机器学习的基础算法调用,在图像处理与分析方面极大地简化了开发流程,使开发者能更专注于核心算法的设计和应用层面的工作。
接下来,以ELF 1开发板为例,本文将详细介绍如何成功移植OpenCV。
01下载OpenCV源码
下载地址:https://opencv.org/releases/选择你需要的版本,点击Source,小编这里以OpenCV- 3.4.1版本为例进行移植。
02将源码拷贝到Ubuntu环境中并进行解压
elf@ubuntu:~/work/a/wenz$ tar xvf opencv-3.4.1.tar.gz elf@ubuntu:~/work/a/wenz$ ls opencv-3.4.1 opencv-3.4.1.tar.gz
03进入OpenCV目录,创建文件夹build和install
elf@ubuntu:~/work/a/wenz$ cd opencv-3.4.1/ elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ mkdir build elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ mkdir install
04CMake-gui配置
首先打开CMake-gui,我们会用到CMake-gui对OpenCV进行配置,若没有请使用以下命令进行安装。
elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ sudo apt-get install cmake cmake-qt-gui cmake-curses-gui elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ cmake-gui
参考下图进行配置:
![wKgaomWc3pSAMmP9AEuXm__hPLU867.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc3pSAMmP9AEuXm__hPLU867.png)
![wKgZomWc3pCABJKkAAFgoCtgB68675.png](https://file1.elecfans.com/web2/M00/BB/AD/wKgZomWc3pCABJKkAAFgoCtgB68675.png)
C :/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc C++ :/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++ Target Root:/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib
![wKgZomWc3ruASg_eAAGsahPMdNY777.png](https://file1.elecfans.com/web2/M00/BB/AD/wKgZomWc3ruASg_eAAGsahPMdNY777.png)
点击finish后,参考下图进行配置
![wKgaomWc3teAQ_pUAAQmNM1jv_o145.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc3teAQ_pUAAQmNM1jv_o145.png)
CMAKE_CXX_FLAGS: -march=armv7ve -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi CMAKE_INSTALL_PREFIX: /home/elf/work/a/wenz/opencv-3.4.1/install CMAKE_EXE_LINKER_FLAGS: -lpthread -lrt -ldl
点击Configure 和Generate,参考下图进行配置
![wKgZomWc3v2AZ8-LAAOs5akmydI916.png](https://file1.elecfans.com/web2/M00/BB/AD/wKgZomWc3v2AZ8-LAAOs5akmydI916.png)
配置成功之后,点击Configure 和Generate。此时已经正常生成Makefile。
![wKgaomWc3wiAMfZUAAF9gh56sKQ786.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc3wiAMfZUAAF9gh56sKQ786.png)
正常生成makefile之后,使用make进行编译
elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi elf@ubuntu:~/work/a/wenz/opencv-3.4.1$ cd build elf@ubuntu:~/work/a/wenz/opencv-3.4.1/build$ make
报错一:
![wKgaomWc3ymAVhTAAADcayLuOx0272.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc3ymAVhTAAADcayLuOx0272.png)
elf@ubuntu:~/work/a/wenz/opencv-3.4.1/build$ vi ../3rdparty/protobuf/src/google/protobuf/stubs/common.cc
加上这一行 #define HAVE_PTHREAD
保存、退出
![wKgaomWc3z-AGOy6AAJ26h1GwPs454.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc3z-AGOy6AAJ26h1GwPs454.png)
报错二
![wKgaomWc30eAZHs4AAD-p4lpvPA061.png](https://file1.elecfans.com/web2/M00/BC/98/wKgaomWc30eAZHs4AAD-p4lpvPA061.png)
elf@ubuntu:~/work/a/wenz/opencv-3.4.1/build$ vi ../3rdparty/libpng/pngpriv.h
将:
# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
改为:
# if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \
![wKgZomWc33KAfRlOAAI982sqvSc944.png](https://file1.elecfans.com/web2/M00/BB/AD/wKgZomWc33KAfRlOAAI982sqvSc944.png)
之后编译就没有报错了,编译完成后,执行make install将库和例程安装到目标文件下。
elf@ubuntu:~/work/a/wenz/opencv-3.4.1/build$ make install
将生成的文件通过U盘拷贝到开发板,至此OpenCV移植就结束啦,希望能对屏幕前的小伙伴提供帮助。
-
嵌入式
+关注
关注
5096文章
19199浏览量
308272 -
计算机
+关注
关注
19文章
7553浏览量
88797 -
开发板
+关注
关注
25文章
5144浏览量
98435 -
OpenCV
+关注
关注
31文章
635浏览量
41615
发布评论请先 登录
相关推荐
ELF 1技术贴|如何在Ubuntu中编译OpenCV库
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何在Ubuntu中编译<b class='flag-5'>OpenCV</b>库](https://file1.elecfans.com/web2/M00/EB/90/wKgaomZZjUuAPcB7AAA6n2s3T5U762.png)
嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu中编译OpenCV库
I.MX6ULL-飞凌 ElfBoard ELF1板卡 - 如何在Ubuntu中编译OpenCV库(X86架构)
OpenCV的移植方法
OpenCV学习之路--5--OpenCV3.4.10的ARM版本移植到开发板 精选资料分享
ARM Linux下OpenCV的移植和使用方法
移植OpenCV-4.3.0的过程
opencv-4.3.0嵌入式Linux移植
![<b class='flag-5'>opencv</b>-4.3.0嵌入式Linux<b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RK3568上OpenCV 的编译移植
![RK3568上<b class='flag-5'>OpenCV</b> 的编译<b class='flag-5'>移植</b>](https://file.elecfans.com/web2/M00/26/D2/poYBAGG_6GuAabC1AAAa94Se-Rw040.png)
RK3568上OpenCV 的编译移植
ELF 1技术贴|LCD作为终端控制台的方法
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|LCD作为终端控制台的方法](https://file1.elecfans.com/web2/M00/B6/FF/wKgaomWCr8CAduFMAABGVuCFI2s064.png)
ELF 1技术贴|在NXP源码基础上适配ELF 1开发板的LED功能
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|在NXP源码基础上适配<b class='flag-5'>ELF</b> <b class='flag-5'>1</b>开发板的LED功能](https://file1.elecfans.com/web2/M00/BA/50/wKgaomWOKTKAfuWLAABArY1D4Jg940.png)
ELF 1技术贴|如何支持exFAT和NTFS格式
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何支持exFAT和NTFS格式](https://file1.elecfans.com/web2/M00/C0/06/wKgaomW6BtqAYrRcAABGdfZLvpM103.png)
ELF 1技术贴|如何移植Boa 到开发板上
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何<b class='flag-5'>移植</b>Boa 到开发板上](https://file1.elecfans.com/web2/M00/C0/9E/wKgaomW-6KaAZ_DXAABGIKZRZSw710.png)
ELF 1技术贴|如何将Python3.6.9移植到开发板上
![<b class='flag-5'>ELF</b> <b class='flag-5'>1</b><b class='flag-5'>技术</b><b class='flag-5'>贴</b>|如何将Python3.6.9<b class='flag-5'>移植</b>到开发板上](https://file1.elecfans.com/web2/M00/C0/94/wKgZomXW5EiAf1EoAABBQv84DIc700.png)
评论