目录
一、前言
现在需要读取图片,处理图片,就需要OpenCV这个库
那么QT项目如何导入OpenCV呢?
二、准备工作
需要知道自己用的编译器是什么?(是msvc?还是minGW?)
msvc又是多少版本的呢?(2022? 2019?)
我目前的情况:
安装了QT6.8(里面集成了msvc2022,cmake)
三、下载OpenCV包
下载不了怎么办?
俺这里有一个4.8版本的exe(其实这就是一个压缩包)
「opencv-4.8.0-windows.exe」
链接:https://pan.quark.cn/s/c6120e13debd
双击执行exe,选择解压的路径
解压完成~
四、包目录
build文件夹里面,就是官方编译好的
sources里面,就是源码(我们可以自行编译)
很多教程都有说,我们可以直接去使用【编译好的OpenCV】
也就是直接使用build文件夹里面的(他是编译好的)
但是,我们需要看看这个编译好的,是否和我们当前的环境匹配!
五、版本匹配问题
请你打开文件夹,看看这里
如果是vc16,就代表他只适合msvc 2019版本
如果是vc17,就代表他只适合msvc 2022版本
我现在是msvc 2022版本,所以没有现成的,我得自己手动编译,或者找别人(也是msvc2022)编译好的
如果你刚好是MSVC 2022,需要OpenCV4.8版本
并且懒得编译,就可以直接使用我这里编译好的:
「msvc2022-opencv480.zip」
链接:https://pan.quark.cn/s/855f3844a400六、QT导入OpenCV
如果你想用现成编译好的,又懒得手动编译,这里就可以直接导入QT了!
这里路径是:E:\openCV\opencv\build
bash# 设置OpenCV_DIR,指定OpenCV的路径 (这里的路径自行修改!) # 你可以把build文件夹放到你喜欢的地方,build文件夹也可以修改名字 set(OpenCV_DIR "E:/openCV/opencv/build") # 查找OpenCV库 find_package(OpenCV REQUIRED) # 包含OpenCV的头文件目录 include_directories(${OpenCV_INCLUDE_DIRS}) # 链接 OpenCV 库 qttest 为项目名(记得更替为你自己的项目名) target_link_libraries(qttest PRIVATE ${OpenCV_LIBS})验证是否导入成功,在main函数中,写入:
cpp#include <opencv2/opencv.hpp> int main() { // 创建一个 500x500 的红色图像(BGR格式) cv::Mat redImage(500, 500, CV_8UC3, cv::Scalar(0, 0, 255)); // 显示图像 cv::imshow("Red Image with Noise", redImage); cv::waitKey(0); // 按任意键关闭窗口 return 0; }如果可以正常运行出一个红色窗口,那么就导入完毕啦~
七、手动编译OpenCV
1、导入项目(他会加载很久,耐心等待)
配置项目的时候,release和debug都可,看自己喜好
2、项目导入完成后,我们就可以开始构建
这里估计要等20分钟左右
3、构建完成,就可以看看build目录
这里面有10G!(一会把需要的内容拷贝到固定的地方,就把这项目给删掉~)
4、到目录下,输入命令,生成install文件夹
到目标目录下,打开cmd:
cppE:\openCV\opencv\sources\build\Desktop_Qt_6_8_2_MSVC2022_64bit-Debug输入命令:
cppcmake -P cmake_install.cmake5、把生成的install文件夹,拷贝到一个好地方
你会发现install文件夹里面的内容,和现成编译好的build文件夹结构是一模一样的!
所以,之后如何引入,这里就不赘述了,请看**【第六点】导入OpenCV**
总结
帮助在QT项目中集成OpenCV库,解决环境配置中的常见痛点。
文章从环境准备开始,指导如何下载与QT兼容的OpenCV源码包,并解析其目录结构,避免因版本不匹配导致的编译失败。
针对手动编译OpenCV 这一核心环节,逐步演示如何通过CMake构建项目、生成安装文件(
install目录),并迁移至稳定路径。同时,文章重点剖析了QT与OpenCV的版本适配问题,提供兼容性检查与解决方案。
最后,通过一个"生成红色噪声图像"的实战案例,验证OpenCV的集成效果,确保开发者能快速上手图像处理功能。
零基础学QT、C++(五)QT编译、导入OpenCV
Pan_peter2025-02-22 8:50
相关推荐
倒头就睡的小比特19 小时前
算法竞赛C++常用的STLweilx123419 小时前
C++笔记-文件IO-<fcntl.h>小羊没烦恼!19 小时前
初探性能优化——2个月到4小时的性能提升伞伞悦读20 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__Smileyqp沛沛20 小时前
前端?C++ ?较大差异基础罗列C语言小火车21 小时前
C/C++ 为什么需要编译器?旖旎夜光21 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解吞下星星的少年·-·1 天前
C++ 萌新语法入门篇霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层another heaven1 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】












