目标:
基于forlinx t113-i核心板,研发一款物体正反与旋转角度识别
源码:
OpenCV源码下载 : https://github.com/opencv/opencv.git
opencv_contrib源码下载:https://github.com/opencv/opencv_contrib.git
安装zlib:GitHub - madler/zlib: A massively spiffy yet delicately unobtrusive compression library.
安装Cmake:CMake - Upgrade Your Software Build System
Index of /files
Qt 5.14.2,下载地址:https://download.qt.io/archive/qt/5.14/5.14.2/
编译/安装:
切换openCV和openCV_contrib的版本为tag4.5.4搭配
因为QT5.14.2的部分库内容和C++支持的版本都不高,比较合适的版本为4.5.4,我也试过编译4.10.0版本的openCV,会出现如下报错:
E:/opencv/opencv-4.10.0/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() {}
所以如题,三者的版本保持这样的对应关系
环境变量的设置
设置源码目录和编译目录后,点击configure,设置c++和c的编译器(注意是32位还是64位,之后保持统一)
根据需求选择模组开关
build_opencv_world 设置为true
CMAKE_CXX_FLAG 设置为 -fpermissive -Wno-psabi -pthread -lrt -ldl
CMAKE_EXE_LINK_FLAGS 设置为 -lstdc++ -pthread -lrt -ldl -lm
CMAKE_BUILD_TYPE 设置为 release
点击Configure和Generate
构建与安装
mingw32-make VERBOSE=1 -j
mingw32-make VERBOSE=1 install -j
设置openCV的环境变量
demo程序测试:
在*.pro中添加
INCLUDEPATH += \
C:\devbin\opencv\opencv-4.5.4-build\install\include \
C:\devbin\opencv\opencv-4.5.4-build\install\include\opencv2
LIBS += \
C:\devbin\opencv\opencv-4.5.4-build\install\x64\mingw\lib\libopencv_*.a
在main.cpp中输入测试用的代码
#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
cv::Mat mt = cv::imread("D:\\About_Learn\\02_Project\\07_Qt_Project\\qtProj\\02_CoinVision\\Vision\\test.jpg", cv::IMREAD_COLOR);
if (mt.empty()) {
std::cerr << "Could not read the image: test.jpg" << std::endl;
return 1; // 或者其他错误处理
}
cv::imshow("image", mt);
cv::waitKey(0);
MainWindow w;
w.show();
return a.exec();
}