环境:
树莓派4B 2G raspbian系统
qt 5.11.0
opencv 4.3
pytorch 1.8.0a0
zbar 0.1.0
项目需求:
图像识别 + 可操作界面,所以要用到opencv和pytorch,编译过程略过,训练过程也略过,只记录调用过程,界面使用的是qt5,可能需要跨平台。
前期准备:
编译安装opencv,记得一定要加上WITH_QT=ON和WITH_OPENGL=ON,要不然qt无法调用opencv的动态库。
编译安装pytorch,非常麻烦,花了我七个小时,中间还出错。
下载编译安装zbar源码,或apt安装。
apt安装qt5-default和qtcreator。
qt工程配置:
pytorch安装完成之后,将lib,include两个文件夹拷到qt的个工程目录下的libtorch文件夹内。
libtorch需要C++14,要不然会报错。
配置pro文件部分配置信息
CONFIG += c++14
CONFIG -= app_bundle
#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lopencv_world430
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lopencv_world430d
# opencv libs
unix:CONFIG(release, debug|release): LIBS += -L/usr/local/lib \
-lopencv_calib3d \
-lopencv_core \
-lopencv_dnn \
-lopencv_features2d \
-lopencv_flann \
-lopencv_gapi \
-lopencv_highgui \
-lopencv_imgcodecs \
-lopencv_imgproc \
-lopencv_ml \
-lopencv_objdetect \
-lopencv_photo \
-lopencv_stitching \
-lopencv_video \
-lopencv_videoio
# torch libs
LIBS += -L$$PWD/libtorch/lib -lc10 \
-lcaffe2_detectron_ops \
-lcaffe2_module_test_dynamic \
-ltorch -ltorch_cpu
# zbar libs
unix:LIBS += -L/usr/local/lib -lzbar
INCLUDEPATH += $$PWD/include \
$$PWD/libtorch/include \
$$PWD/libtorch/include/torch/csrc/api/include
unix:INCLUDEPATH += /usr/local/include/opencv4 \
/usr/local/include
DEPENDPATH += $$PWD/include \
$$PWD/libtorch/include \
$$PWD/libtorch/include/torch/csrc/api/include
unix:DEPENDPATH += /usr/local/include/opencv4 \
/usr/local/include
torch的slots和qt的slots重复定义了会报错,所以调用的时候加上宏。
#ifdef QT_CORE_LIB
#undef slots
#endif
#include <torch/script.h>
#ifdef QT_CORE_LIB
#define QT_CORE_LIB slots
#endif