MCU部署OpenCV的“配置篇

书接上文,本期小编将带着大家一起来搭建开发环境,并最终将编译出来的代码部署到目标平台。
相信大家已经迫不及待,话不多说,直接开整。
说在前头,有几个小工具需要提前安装下:
为了保证最终镜像的调试与验证, 安装mcuxpresso作为调试ide,然后还需要一个串口终端来查看打印(例如teraterm,putty等)
安装git软件,负责获取opencv源码以及后续代码的维护
当然,如果想在linux下开发的话,可能还需要一丢丢的linux操作基础。
不过,小编这里就以windows为例进行说明了,linux环境下的操作可以说:如有雷同,那必然不是巧合。
环境搭建
1. 下载opencv源码:https://github.com/opencv/opencv.git 找一个喜欢的位置,执行以下指令,获取源码:
git clone --depth=1 https://github.com/opencv/opencv.git
2. 下载安装windows特供版cmake:https://cmake.org/files/v3.10/cmake-3.10.2-win64-x64.zip 再找一个我们喜欢的位置,解压之:
your_path/cmake-3.10.2-win64-x64
3. 之前说到,因为我们这里不借助ide来进行代码的编译工作,就需要依靠make工具来完成这一任务。下载mingw,https://sourceforge.net/projects/mingw/files/latest/download 这里已包含了make工具。下载完成后就是一键下一步,直到安装成功:
your_path/mingw
4. 选择交叉工具链,有两个选择:keil提供的armclang,或是mcuxpresso中提供的gcc工具链arm-none-eabi-gcc。考虑到keil作为收费软件,这里直接选择后者。
不过,这里只是编译代码的工具不同而已,不会影响后续opencv代码的配置。
5. 从小编自己的代码仓库https://gitee.com/crist_xu/opencv_mcu 找到下面两个文件夹,放到上面下载的opencv代码路径中:
fake_root中是一些头文件和工具链配置文件。
opencv32_stdint用来重新定义int类型,这个是必要的。
opencv模块配置
1. 在源码路径下,新建文件夹用来存放编译后的代码,起名build。之后在此文件夹中执行:
your_path/cmake-3.10.2-win64-x64incmake-gui.exe ...
打开cmake,长这个样子:
2. 点击configure,进行工程配置
这里能够指定工程管理工具,如果想使用mcxpresso ide的话,可以选择eclipse cdt4 – mingw makefiles 这样一来会生成一个eclipse 工程,就可以使用ide操作了。
不过,小编要反其道而行,选择mingw makefiles,这样我们可以直接使用命令行的形式进行代码编译。
之后点击specify toolchain file for cross-compiling并点击next:
下一步是修改工具链文件,指定编译器路径等。
在上文提到的fake_root文件夹中找到armgcc.cmake / gcc.cmake,如果想要使用armclang,编辑armgcc.cmake:
这里的helper_file_path就是fake_root文件夹的位置;而toolchain_dir是keil的安装位置,主要是为了让cmake能够找到对应的工具链。
如果是想要使用gcc的话,就打开编辑gcc.cmake:
这里的helper_file_path依旧是fake_root文件夹的位置,而toolchain_dir这里就是mcuxpresso的对应位置。
修改好之后,直接选择gcc作为工具链并点击继续:
点击finish:
等待配置运行结束,所有属性将以红色字体高亮显示:
3. 模块配置,最好是先点击grouped以及advanced,这样一来模块被归类,就可以很容易找到那些关键分子。
这里我们回忆一下上一篇文章提到的,因为opencv包罗万象,拥有众多模块。而不是所有的模块都适合运行在mcu平台上,例如那些需要依赖于os支持即多进程的模块,因此需要进行小心的适配:大家一定要严格按下表进行配置勾选:
groups options
ungrouped entries unchecked all
blas skipped
build checked: build_jpeg, build_openjpeg, build_png,
build_opencv_core, build_opencv_features2d, build_opencv_highgui,
build_opencv_imgcodecs, build_opencv_imgproc, build_opencv_video
build_opencv_world
clamdblas skipped
clamdft skipped
cmake skipped, but can change the cmake_build_type(debug / release) if you want
cpack unchecked all
cpu skipped
cv unchecked all
dc1391 skipped
enable unchecked all except the enable_fast_math
highgui unchecked
host skipped
install skipped
opencv checked: opencv_disable_filesystem_support, opencv_disable_thread_support, opencv_enable_memalign
opj unchecked all
openblas skipped
png skipped
python2 / python3 skipped
videoio unchecked all
with checked: with_openjpeg, with_png
zlib skipped
之后再次点击configure并点击generate:
4. 代码编译:在build文件夹中,打开powershell命令行,运行make:
your_path/mingw/bin/mingw32-make.exe -j7
5. 经过漫长的等待,会获得5个静态库,libopencv_world.a,这是build/lib下所有图像处理函数的大集合;其他四个是针对图像编解码的函数:
至此,我们就基本完成了opencv源码的配置与编译,并最终获得了5个可爱的静态库,下一步就是如何将其部署到我们的mcu平台上。


基于工业无线DTU的空气污染监测防治方案
关于区块链的未来一个大预测
电路图形符号大全,教你看懂电路图
与目标网络的网络状态测试
业主不知情地“刷脸被卖房”,究竟谁的锅?
MCU部署OpenCV的“配置篇
波兰的5G频谱拍卖投标期限被再次推迟
排除服务器接入问题地基本步骤
电子万能拉力试验机是个怎么样的试验设备?记录表、指导书、技术招标
200W大功率无线充电技术-深入探讨帕沃思科技提供的无线充电模组方案
物联网设备需要面对的十大安全挑战
中科曙光第五代云计算操作系统Cloudview 5.0在计算、存储、网络进行技术升级
工业设备的生命周期及在短期内从根本上提升系统的功能
人社部拟发布人工智能训练师等新职业 华为智能无人店武汉开业
基于labview的工控机与变频器间通讯的设计和实现
如何使用几种不同的硬件模型制作Sonoff智能交换机
单穗玉米脱粒机与普通脱粒机的对比,它的优势是什么
中国联通在移动业务和移动出账方面用户累计已到达了为3.12亿户
国内智能教育机器人市场能否迎来新机
在购买激光测距仪时,您需要考虑几点