1、确定交叉编译工具链,进入Qt工具的选项,在编译器中找到T113的gcc(交叉编译工具链)/home/zhiwan/t113/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc。
2、下载OpenCV源码及拓展库并解压,我用的是opencv4.12.0的,进入源码目录后新建build文件夹;
编写.cmake文件,在其中放入gcc路径及其他相关内容;
1 | #.cmake文件 |
然后执行 cmake +opencv拓展库路径 + 安装路径 + -D各种库配置 + 源码目录 。(类似下方代码)
特别提醒:在命令行操作最好用单行操作!!!不然用 \ 换行很容易出错!(如果需要调格式自己调一下)
1 | cmake -DCMAKE_TOOLCHAIN_FILE=/home/zhiwan/opencv_4.12.0/opencv-4.12.0/arm-toolchain.cmake -DCMAKE_INSTALL_PREFIX=/home/zhiwan/opencv_4.12.0/__INSTALL_opencv_4.12.0 -DOPENCV_EXTRA_MODULES_PATH=/home/zhiwan/opencv_4.12.0/opencv_contrib-4.12.0/modules -DBUILD_SHARED_LIBS=ON -DBUILD_PROTOBUF=ON -DBUILD_opencv_dnn=ON -DOPENCV_DNN_ONNX=ON -DWITH_PROTOBUF=ON -DOPENCV_GENERATE_PKGCONFIG=YES -DPROTOBUF_UPDATE_FILES=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_CUDA=OFF -DWITH_OPENMP=OFF -DWITH_JPEG=ON -DCMAKE_CXX_STANDARD=11 -DWITH_PNG=ON -DOPENCV_GENERATE_PKGCONFIG=YES -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release .. |
1 | 别用这个,这个只是方便添加和查看而已的 |
3、执行 make -j8 或 make -j4 (多线程编译,加快编译速度)。
4、执行 make install (安装编译好的文件)。
5、最后还需要将运行所需要的编译好的动态库(有.so的)放到板子上
如果需要用DNN模块的,需要opencv-4.12.0\3rdparty\protobuf\src\google\protobuf\stubs\mutex.h(改为你放源码的路径)里的constexpr WrappedMutex() {}删除,如图,
make的时候error: call to non-constexpr function ‘google::protobuf::internal::WrappedMutex::WrappedMutex()这个错误就被修复了,错误原因是gcc版本太低