openCV 下载

Windows下CMake的下载与安装
CMake 是一个跨平台的开源构建系统生成工具,旨在简化软件项目的构建过程,支持多种编程语言,尤其在 C、C++ 项目中应用广泛。
核心功能与优势
跨平台支持:CMake 能够在 Windows、Linux、macOS 等多种操作系统上工作。它根据不同平台的特性,生成相应的原生构建文件,如在 Linux 上生成 Makefile,在 Windows 上生成 Visual Studio 项目文件(.vcxproj),这使得开发者可以用一套 CMake 配置文件管理不同平台的构建,大大提高了项目的可移植性。
简化构建配置:相比于直接编写复杂的 Makefile 或其他平台特定的构建脚本,CMake 使用简单的语法来描述项目的构建规则。例如,通过add_executable命令指定生成可执行文件,add_library命令添加库文件,开发者只需关注项目的源文件组成和依赖关系,而不必深入了解不同平台构建系统的细节。
依赖管理:CMake 可以方便地处理项目的依赖关系。它能够查找系统中已安装的库,也支持下载和构建外部依赖库。例如,使用find_package命令查找像 OpenCV 这样的常用库,并自动链接相关的头文件和库文件,确保项目正确使用外部依赖。







编译:mingw版本





bash
mingw32-make -j 8
bash
mingw32-make install
查看

Qt开发的第一个OpenCV程序
QT 工程新建









将编译后的库复制都工程目录下


主代码
bash
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>
#include <Qdebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 读取图像
cv::Mat image = cv::imread("D:/QT_openCV_pro/pro_01/untitled_02/src/1.png");
// 检查图像是否成功读取
if (image.empty()) {
std::cout << "Could not open or find the image" << std::endl;
}
// 显示图像
cv::imshow("Display window", image);
int key = cv::waitKey(0); // 等待按键按下
// 根据按下的按键进行不同操作
if (key == 's') {
// 保存图像
cv::imwrite("saved_image.jpg", image);
std::cout << "Image saved as saved_image.jpg" << std::endl;
}
}
MainWindow::~MainWindow()
{
delete ui;
}

qmake 工程

cmake 工程
bash
cmake_minimum_required(VERSION 3.16)
project(untitled_03 VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 库文件所在目录
set(MYLIB_DIR D:/ljl/FPGA/QT_openCV_pro/pro_01/untitled_03/OpenCV_lib)
#头文件所在目录
set(MYLIB_INCLUDE_DIR D:/ljl/FPGA/QT_openCV_pro/pro_01/untitled_03/OpenCV_lib/include)
# 需要添加的库。罗列在这里
SET(MYLIB_LIB
libopencv_core4130.dll.a
libopencv_calib3d4130.dll.a
libopencv_dnn4130.dll.a
libopencv_features2d4130.dll.a
libopencv_flann4130.dll.a
libopencv_gapi4130.dll.a
libopencv_highgui4130.dll.a
libopencv_imgcodecs4130.dll.a
libopencv_imgproc4130.dll.a
libopencv_ml4130.dll.a
libopencv_objdetect4130.dll.a
libopencv_photo4130.dll.a
libopencv_stitching4130.dll.a
libopencv_video4130.dll.a
libopencv_videoio4130.dll.a
)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
set(PROJECT_SOURCES
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(untitled_03
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
else()
if(ANDROID)
add_library(untitled_03 SHARED
${PROJECT_SOURCES}
)
else()
add_executable(untitled_03
${PROJECT_SOURCES}
)
endif()
endif()
# 设置头文件路径
target_include_directories(untitled_03 PRIVATE ${MYLIB_INCLUDE_DIR})
# 设置链接目录
target_link_directories(untitled_03 PRIVATE ${MYLIB_DIR}/lib)
# 链接库
target_link_libraries(untitled_03 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets )
target_link_libraries(untitled_03 PRIVATE
${MYLIB_DIR}/lib/${MYLIB_LIB}
)
if(${QT_VERSION} VERSION_LESS 6.1.0)
set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.untitled_03)
endif()
set_target_properties(untitled_03 PROPERTIES
${BUNDLE_ID_OPTION}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS untitled_03
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(untitled_03)
endif()
