From 7e7c9f1d74a7df098c19740ca32c864edcdb304c Mon Sep 17 00:00:00 2001 From: luochen570 <1160510664@qq.com> Date: Sun, 31 May 2026 12:14:45 +0800 Subject: [PATCH] Document Windows build setup --- .gitignore | 12 +++++++++ CMakeLists.txt | 6 ++++- QtOpenCVImageTool.zip | Bin 6624 -> 7553 bytes readme.md | 59 +++++++++++++++++++++++++++++++++++------- 4 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e59e1fe --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +build/ +cmake-build-*/ +.qt/ +.qtc/ +CMakeUserPresets.json +*.user +*.suo +*.vcxproj* +*.sln +*.exe +*.dll +*.pdb diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d1d11f..611ff0e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) find_package(OpenCV REQUIRED) -add_executable(QtOpenCVImageTool +add_executable(QtOpenCVImageTool WIN32 main.cpp MainWindow.h MainWindow.cpp @@ -24,3 +24,7 @@ target_link_libraries(QtOpenCVImageTool PRIVATE ) target_include_directories(QtOpenCVImageTool PRIVATE ${OpenCV_INCLUDE_DIRS}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(QtOpenCVImageTool) +endif() diff --git a/QtOpenCVImageTool.zip b/QtOpenCVImageTool.zip index 116fd4d50bb41fcd5dfdf110ccd1d49654fa5d89..194aaccfad65a99ec83a91606d5401a8095b5f99 100644 GIT binary patch delta 2532 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 delta 1590 zcmV-62Fdw>JK!^aP)h>@6aWAK2mr5Ozg!*)XQ zE_8Twl~P@6!Y~wl@2|*%5ABN}V-9@F(jeJvV$)WA3$e*uX1`WbHW2^&G96A_H&`Hn zdvfkM_ueEg&KQgxe;rG$Rhd1vLi&_9Ri0k=wNs$t$V#~^aS(uvk@!{=+@ljB6KY@N9% zOtp2#x|OZbyPk)dbFzRbKC1M#Hko|&aik3PCjl`d_sQYH$W(dJDJ_)yC%LWvcKeng z6wR^_i;(c-5O^O@O9KQH000080Iy)bTp%JsT$BK_p8@+4f3RS`TqK)2C>8_&0P_X_ z00{s90CHtvWNl?GZDeIsOLH1W5WerP*eV@Wg37^3m5))XQmOKzlyb$_MFLCMLZSqY za|FGBu&{)e5FjKZA<2nZkgUjPmxcdgZ_n(W@)y#xGhl3AV0OCuo9?f_?m2lWF3-zP zqoIw(-(+Zve_%%=wGllx>_HyRcWGf?l1TF%eCW`ttZj{H`HF=+4+mF6@tExBBS&x3 zis~Mn{x?*G!vs!ONxHy6Io7AdHo}0Rk#diyNs=kSFo6y-~FrY2tw#WF6}rI>7xM(F*pcK^r%;swW^<5ox6N>9q-e z9y>c0Ci6wX)8c4-S5}rD1(rkWieFjcwJI!yn>J}?grloEM$HOlanRYWU z7&w%;ldtWic4M?zU7g?yGplKw4SMuZt zv%+L0dqSegJ{T9ER?+!sJoZ|4YiURf8IpBM@V9#*(kZHrr2|%cmLUITg}yU6a@ga* ze|!cQq&apnH}v=|Lul`#$*fZ4V|S^R8e3E;wI{DvP8{8 zNEu>~M3f2zl^oo0!bD}2zMB$k2`Nq3n%x2@e%oqdTb%2*GcGu76`D9tOV8G}LV=(n z+k-B`yU8)^<=mPH?bbxHT!3^~b$WmCe@IDkn+fM4343YKGtSu_4)6n+q^tP5aUFkLNlWmJ#Q(PWaNS+}c)2s3m<)s@;!?CL}ey@#7zdmJ?ZBa^WlIRV#`>l__HuwcJjB%3=Z76bqQ^9BF_2><{90000000000 oq=9Y}0044jVPtJ(E^TB`O9ci10000500jUa0RRB27ytkO03tQ(Jpcdz diff --git a/readme.md b/readme.md index 422bfad..a261511 100644 --- a/readme.md +++ b/readme.md @@ -20,19 +20,60 @@ - 图像分类:根据平均亮度和主色通道给出简单分类,同时显示目标数量。 - 线程处理:图像处理工作对象运行在 `QThread` 中,避免阻塞界面。 -## 编译运行 +## Windows 编译运行 -需要先安装 Qt5 或 Qt6、OpenCV、CMake 和 C++17 编译器。 +本工程用于构建 Windows 桌面应用程序。建议使用 Qt Creator 打开 `CMakeLists.txt` 构建,编译器可选择 MSVC 或 MinGW,但 Qt、OpenCV 和编译器位数必须一致,例如全部使用 64 位。 -```bash -mkdir build -cd build -cmake .. -cmake --build . -./QtOpenCVImageTool +### 环境准备 + +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 ``` -Windows 下可以使用 Qt Creator 打开本目录的 `CMakeLists.txt`,配置好 Qt 和 OpenCV 后直接构建运行。 +实际路径以你的 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`。 ## 说明