环境:ubuntu18.04 qt5.13.2 opencv3.4.6
官方开源地址: RM开源代码地址
为什么要做移植:
官方代码基于ARM平台编写,但NUC/妙算2(CPU版本)都是X86平台,为了使用X86平台需要进行移植。
移植步骤:
1、删除.pro文件下的所有和neon有关的代码,因为neon是ARM平台的加速库,不能在X86平台下使用。
需要删除的代码如下
QMAKE_CXXFLAGS += -mfloat-abi=hard -mfpu=neon -march=armv7-a -marm -mthumb-interwork
QMAKE_CFLAGS += -mfloat-abi=softfp -mfpu=neon -march=armv7-a -marm -mthumb-interwork
这两段是QT编译时调用neon库的参数,需要全部删除。
sse_to_neon.hpp \
这段是包含了需要用到neon的头文件,也要删除。
2、删除ArmorDetector.cpp中对neon的调用。
删除31、32、33行的
#ifndef USE_NEON
//#define USE_NEON
#endif
从288行的#else直到501行的#endif都需要删除
170行的#ifndef需要删除,此处对应前面删除的#else
3、修改.pro文件的lib包含为
使其能够包含thread需要用到的pthread库
LIBS += `pkg-config --libs opencv` \
/usr/lib/x86_64-linux-gnu/libpthread.so
到此就已经解决了代码中的ARM部分的冲突
运行时可能的报错还会涉及到串口的调用和ubuntu的路径问题,需要按照自己的实际配置进行修改