[嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_用Qt编译Windows-Opencv库
[嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_用Qt编译Windows-Opencv库
- 准备环境
- git-clone opencv库代码
- Qt编译
- Qt Creator(Qt5.12内置软件)-打开Opencv
- 等待10分钟以上...配置Opencv编译配置
- 报错
- ①opencv/3rdparty/protobuf/src/google/protobuf/stubs/mutex.h:124:29: error: temporary of non-literal type 'google::protobuf::internal::CallOnceInitializedMutex<std::mutex>' in a constant expression constexpr WrappedMutex() {}
- ②opencv/3rdparty/protobuf/src/google/protobuf/map_field.h:337:37: error: call to non-constexpr function 'google::protobuf::internal::WrappedMutex::WrappedMutex()' state_(STATE_MODIFIED_MAP) {}
- 编译成功
- 一个完整的opencv4.x测试demo
- 百度云
- 参考文章
准备环境
- cmake4.1
- qt5.12
- python3
- jdk11
git-clone opencv库代码
我这边选择的是在d盘
git clone https://github.com/opencv/opencv
Qt编译
Qt Creator(Qt5.12内置软件)-打开Opencv
等待10分钟以上…配置Opencv编译配置
CMake: WITH_QT 和 WITH_OPENGL勾上ON
build的步骤->勾选install
切换到Release构建Qt
此时点击编辑-build
报错
①opencv/3rdparty/protobuf/src/google/protobuf/stubs/mutex.h:124:29: error: temporary of non-literal type ‘google::protobuf::internal::CallOnceInitializedMutexstd::mutex’ in a constant expression constexpr WrappedMutex() {}
解决方案:
//注释报错代码
//constexpr WrappedMutex() {}
//解决报错:
WrappedMutex() {}
②opencv/3rdparty/protobuf/src/google/protobuf/map_field.h:337:37: error: call to non-constexpr function ‘google::protobuf::internal::WrappedMutex::WrappedMutex()’ state_(STATE_MODIFIED_MAP) {}
解决方案:
//注释报错代码//explicit constexpr MapFieldBase(ConstantInitialized)// : arena_(nullptr),// repeated_field_(nullptr),// mutex_(GOOGLE_PROTOBUF_LINKER_INITIALIZED),// state_(STATE_MODIFIED_MAP) {}//解决报错:explicit MapFieldBase(ConstantInitialized): arena_(nullptr),repeated_field_(nullptr),mutex_(GOOGLE_PROTOBUF_LINKER_INITIALIZED),state_(STATE_MODIFIED_MAP) {}
编译成功
一个完整的opencv4.x测试demo
[嵌入式embed][Qt]Qt5.12+Opencv4.x+Cmake4.x_测试Qt编译的opencv4.x的库
百度云
百度云-软件安装包
参考文章
使用Qt构建OpenCV(Windows下)