Files
chengnan/readme.md
2026-05-31 12:14:45 +08:00

81 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Qt + OpenCV 图像显示与处理
本工程使用 Qt Widgets 设计界面,使用 OpenCV 完成图像处理。程序支持打开图片、保存图片、另存图片,支持缩放、平移、旋转,并提供目标提取和简单图像分类功能。图像显示使用 Qt 的 `QLabel`/`QWidget`,没有使用 `cv::imshow`
## 文件说明
- `CMakeLists.txt`CMake 工程配置。
- `main.cpp`:程序入口。
- `MainWindow.h`:主窗口类和处理参数声明。
- `MainWindow.cpp`界面、图像读写、Qt 线程和 OpenCV 处理实现。
## 功能
- 打开图片:读取 `png/jpg/bmp/tif` 等常见格式。
- 保存图片:保存当前处理结果。
- 另存图片:将处理结果保存为新文件。
- 显示对比:左侧显示处理前图像,右侧显示处理后图像。
- 基本处理:缩放、水平平移、垂直平移、旋转。
- 目标提取使用灰度化、Otsu 阈值、形态学处理和轮廓检测提取前景目标,并用绿色矩形框标记目标。
- 图像分类:根据平均亮度和主色通道给出简单分类,同时显示目标数量。
- 线程处理:图像处理工作对象运行在 `QThread` 中,避免阻塞界面。
## Windows 编译运行
本工程用于构建 Windows 桌面应用程序。建议使用 Qt Creator 打开 `CMakeLists.txt` 构建,编译器可选择 MSVC 或 MinGW但 Qt、OpenCV 和编译器位数必须一致,例如全部使用 64 位。
### 环境准备
1. 安装 Qt for Windows推荐 Qt 6.x并安装对应的 MinGW 64-bit 或 MSVC 64-bit 组件。
2. 安装 OpenCV for Windows或自行用相同编译器编译 OpenCV。
3. 安装 CMake。Qt Creator 通常会自带可用的 CMake。
### Qt Creator 构建
1. 打开 Qt Creator。
2. 选择“打开项目”,打开本目录下的 `CMakeLists.txt`
3. 选择 Windows Kit例如 `Desktop Qt 6.x MinGW 64-bit``Desktop Qt 6.x MSVC 64-bit`
4. 如果 CMake 找不到 OpenCV在 CMake 配置中加入:
```text
OpenCV_DIR=C:/opencv/build/x64/vc16/lib
```
实际路径以你的 OpenCV 安装目录为准。MinGW 自编译 OpenCV 时,应填写包含 `OpenCVConfig.cmake` 的目录。
5. 点击“构建”并运行。
### 命令行构建示例
MinGW 示例:
```bat
mkdir build
cd build
cmake .. -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:\Qt\6.6.0\mingw_64 -DOpenCV_DIR=C:\opencv\build
cmake --build . --config Release
```
MSVC 示例:
```bat
mkdir build
cd build
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_PREFIX_PATH=C:\Qt\6.6.0\msvc2019_64 -DOpenCV_DIR=C:\opencv\build\x64\vc16\lib
cmake --build . --config Release
```
### 运行和发布
在 Windows 上运行生成的 `QtOpenCVImageTool.exe` 时,需要能找到 Qt 和 OpenCV 的 DLL。调试阶段可在 Qt Creator 中直接运行;发布时可使用:
```bat
windeployqt QtOpenCVImageTool.exe
```
然后把 OpenCV 的运行库 DLL 一并复制到 exe 所在目录,例如 `opencv_world*.dll` 或相关 `opencv_*.dll`
## 说明
本示例中的分类属于简单规则分类,适合作为课程作业演示:根据图像整体亮度判断“偏亮/偏暗/亮度适中”,根据 BGR 平均值判断主色。若需要更高精度分类,可替换为训练好的 OpenCV DNN 或传统机器学习模型。