OpenCV环境配置(QT 6.6.1 MSVC2019 64bit + OpenCV – 4.12.0)

前言

项目需求要做个类似Image2Lcd的软件,用来将图片转换为纯黑白的C语言数组格式保存,用来下发嵌入式端的屏幕显示。

这个需求应该是不太难的,直接用C语言读像素写点算法就能做,不过想到图像处理首先想到的技术还是OpenCV,于是准备用它来实现试试,顺便学习下这个库。

目前暂定技术路线:QT 6.6.1 MSVC2019 64bit + OpenCV -- 4.12.0,都是目前比较新的环境。

MinGW和MSVC都可以配置OpenCV,但是OpenCV提供的安装包里是适配MSVC的版本,如果用MinGW需要重新编译源码。


一、OpenCV下载

https://opencv.org/releases/

顺便一提,官网直接下载非常慢,只有十几KB,挂个代理会快很多

二、安装和运行

1.运行exe

这个官方的exe包看着应该就是个压缩包,不是一般的那种软件安装包。

解压完成,得到了sources源码和build编译后的输出文件

2.QT项目配置

创建一个最简单的widget项目后。

右键项目,选择"添加库",弹出如下窗口,选择"外部库"

选择安装路径下的opencv/buiold/x64/vc64/lib目录下的lib文件,其中以d结尾的是debug版本,无d结尾的是release版本,任选其一即可,另一个会自动被添加进来

此处以选择了debug版本为例子,勾选"移除release版本中的'd'后缀"即可自动将release版本的添加至项目中

至此,在项目的.pro文件中会被添加如下的配置信息

bash 复制代码
win32:CONFIG(release, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc16/lib/ -lopencv_world4120
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc16/lib/ -lopencv_world4120d

INCLUDEPATH += D:/OpenCV/opencv/build/x64/vc16
DEPENDPATH += D:/OpenCV/opencv/build/x64/vc16

还需要手动为项目配置include路径和bin路径,参考如下:

其中build/include为各头文件所在位置;

/build/x64/vc16/bin/为动态库dll文件所在位置;

下面的参考代码中dll所在位置被注释起来是因为不太推荐这样直接添加,因为在编译阶段是不读取动态库的,容易出现警告,不过不影响项目使用。

bash 复制代码
win32:CONFIG(release, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc16/lib/ -lopencv_world4120
#                                               \ -LD:/OpenCV/opencv/build/x64/vc16/bin/ -opencv_worl4120.dll
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc16/lib/ -lopencv_world4120d
#                                               \  -LD:/OpenCV/opencv/build/x64/vc16/bin/ -opencv_worl4120d.dll

INCLUDEPATH += D:/OpenCV/opencv/build/x64/vc16  \
                D:/OpenCV/opencv/build/include

DEPENDPATH += D:/OpenCV/opencv/build/x64/vc16   \
                D:/OpenCV/opencv/build/include

上文提到不太推荐在pro中写动态库位置,以下是一般的配置动态库的方法:

在右键"此电脑"-->属性-->"高级系统设置"-->环境变量-->系统变量里的"PATH"-->新建一条dll库所在的路径-->退出时所有界面需要点击确定,确保环境变量配置成功。

配置完bin文件夹所在的路径后,QT可能需要重启一下,让它重新读取系统的环境变量。




3.测试OpenCV

以上完成配置后,需要测试一下释放成功配置了OpenCV

简单修改了下widget项目的main函数来调用openCV,

其中"cv::"后的三句代码是OpenCV测试的代码,打开了一张bmp图片并显示它,

其余为QT项目的基础代码。

cpp 复制代码
#include "mainwindow.h"

#include <QApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>



using namespace cv;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    cv::Mat image = cv::imread("E:/2025/1P/Elink/EpaperDisplayControl/EpaperDisplayControl/img/triangle.bmp");
    cv::namedWindow("Test Image");
    cv::imshow("Test Image", image);

    w.show();
    return a.exec();
}

测试效果如下,顺利添加了一个窗口显示图片:

相关推荐
freshman_y13 小时前
Qtcreator怎么新建安卓项目?编写一个五子棋游戏APP?
android·qt
wljy118 小时前
Qt入门(一)
开发语言·qt
火山上的企鹅18 小时前
QT/QGroundControl 实战:Mission Planner 航线在 QGC 中出现 Takeoff 落到 (0,0) 的排查与修复
qt·mp·qgc·无人机开发
雪的季节19 小时前
qt信号槽跨线程使用时候的坑
java·开发语言·qt
yy_xzz19 小时前
【Qt 开发笔记】能扛住断电、多线程的通用配置类(移植直接用)
笔记·qt
丁劲犇21 小时前
改造传统Qt6Widgets程序为多会话MCPServer生产力工具-技巧与实现
qt·ai·agent·并发·mcp·mcpserver·widgets
程序媛徐师姐21 小时前
Python基于OpenCV的马赛克画的设计与实现【附源码、文档说明】
python·opencv·django·马赛克绘画·python马赛克绘画系统·马赛克画·python马赛克画
sycmancia1 天前
Qt——对话框及其类型
开发语言·qt
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章49-人脸检测
图像处理·人工智能·opencv·算法·计算机视觉
sycmancia1 天前
Qt——登录对话框
开发语言·qt