QT5 MSVC2017 64bit配置OpenCV4.5无需编译与示范程序

news2024/12/24 0:41:20

环境:Windows 10 64位

Opencv版本:4.5

QT:5.14

QT5 MSVC2017配置OpenCV

版本参考:

opencv msvc c++对应版本

1.安装MSVC2017(vs2017)

打开Visual Studio Installer,点击修改

 选择vs2017生成工具:

2.下载OpenCV4.5并解压

opencv4.5版本

3.解压opencv-4.5.4-vc14_vc15.exe

vc15 = Visual Studio 2017

OpenCV4.5 支持 VS2017,VS2019(x64)

OpenCV4.6 支持 VS2017,VS2019(x64)

3.QT安装与配置:

Qt 下载
国内镜像网站
这里给大家推荐几个国内著名的 Qt 镜像网站,主要是各个高校的:

中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
中国互联网络信息中心:https://mirrors.cnnic.cn/qt/

Qt6 官网QtCreator 下载与安装方法win10_qt6下载-CSDN博客

4.环境变量配置

一、配置QT安装的路径

二、配置Opencv的解压的位置

5.打开QT Creator新建项目

 

选择qmake

 选择MSVC2017 64bit

点击完成

 

5.双击打开pro文件

编辑区域右键选择添加库

 

添加库文件路径后:

pro文件已添加路径:

 示范代码:

这个函数是显示原图,值得注意的是,在转化8位3通道的图像时,OpenCV和QImage使用的红蓝通道是相反的,需要使用rgbSwapped方法互换一下

void MainWindow::on_pushButton_read_clicked()
{
    std::string str3 = file_read(i);
    cv::Mat srcimage = cv::imread(str3);
    /* -------------------------------------------------------- */
   // cv::Mat srcimage=cv::imread("../MainWindow/2.jpg");
    //cv::imshow("原始图片",src);R
    //Mat转QImage 像素   oldlabel放置原图
       QImage disimage = QImage(srcimage.data,srcimage.cols,srcimage.rows,srcimage.cols*srcimage.channels(),QImage::Format_RGB888);
       QImage imag =disimage.rgbSwapped();//将红蓝通道对换
      // disimage = imag.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatioByExpanding);
       disimage = imag.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);
     ui->label->setPixmap(QPixmap::fromImage(disimage));
}
/*
 * ---------------------------
opencv_t1.exe - 系统错误
---------------------------
由于找不到 opencv_world454d.dll,无法继续执行代码。重新安装程序可能会解决此问题。
---------------------------
确定
---------------------------
https://www.cnblogs.com/txwtech/p/17844109.html ,解决方法
 *
 * */

std::string MainWindow::file_read(int &i)
{
    /* 可以读取绝对路径下的第一张图片 */
    //获取应用程序可执行文件的文件路径:
    //QDir::currentPath();
    //获取当前工程目录
    QDir dir(path);
    QStringList filename ;
    filename << "*.png" << "*.jpg";//可叠加,可使用通配符筛选
    QStringList results;
    results = dir.entryList(filename,QDir::Files | QDir::Readable,QDir::Name);

    //增加一个判定
    int a=results.size();
    //qDebug()<<a;打印出来有几张图片
    qDebug()<<"i"<<i;
    if(i+1>a)
    {
        QWidget *parent=new QWidget;
       // QMessageBox::information(parent,tr("aa"),tr("aa"),tr("aa"),tr("aa"));
      //  QMessageBox::information(this,tr("提示"),tr("最后一张,将返回第一张"),tr("确定"),tr("取消"));
        QMessageBox::information(parent,tr("提示"),tr(" 最后一将返回第一张 "),tr("确定"),tr("取消"));
       // QMessageBox::information(parent,tr("aa"),tr(" 最后一将返回第一张 "));

        qDebug()<<i;
        i--;//回到上一张
        i=0;
    }

    //qDebug()<<results;
    //results里就是获取的所有文件名了,这里的qdebug是将运行的路径进行输出
    QString st=results.at(i);
    QString rt=path;
    qDebug()<<rt+st;
    std::string str1=rt.toStdString();
    std::string str2 = st.toStdString();
    std::string str3=str1+str2;
    return str3;
}

void MainWindow::on_pushButton_next_pic_clicked()
{
        i++;
        file_read(i);
        on_pushButton_read_clicked();
        on_pushButton_to_gray_clicked();
}


void MainWindow::on_pushButton_previous_pic_clicked()
{
        i--;
        if(i<=0)
        {
            i=0;
        }
        file_read(i);
        on_pushButton_read_clicked();
        on_pushButton_to_gray_clicked();
}
增加一个警告框用来提示是否存在文件夹,如果没有就创建


void MainWindow::on_pushButton_create_folder_clicked()
{
           QDir *temp = new QDir;
           bool exist = temp->exists(path);
           if(exist)
            {// QMessageBox::warning(this,"创建文件夹","文件夹已经存在!");//会显示中文乱码
              QMessageBox::information(this,tr("提示"),tr("创建成功"),tr("确定"),tr("取消"));
           }
           else
           {
               bool ok = temp->mkdir(path);
               if(ok)
               {
                   ;
                  // QMessageBox::information(this,u8"提示",u8"创建失败!",u8"确定",u8"取消");
               }
                  // QMessageBox::warning(this,"创建文件夹","文件夹创建成功!");

           }
}


void MainWindow::on_pushButton_to_gray_clicked()
{

        std::string str3=file_read(i);
        cv::Mat srcimage=cv::imread(str3);
        //cv::imshow("原始图片",src);
        cv::Mat img_resize,img_Gray,img_blur;
        //cv::resize(srcimage, img_resize,cv::Size(), 0.5, 0.5);
        cvtColor(srcimage, img_Gray, cv::COLOR_BGR2GRAY);
        GaussianBlur(img_Gray, img_blur, cv::Size(3, 3), -1, -1);//高斯模糊化

        //Mat转QImage 像素   oldlabel放置原图
          // QImage disimage = QImage(img_blur.data,img_blur.cols,img_blur.rows,img_blur.cols*img_blur.channels(),QImage::Format_Grayscale8);
        //Mat转QImage 像素   oldlabel放置灰度图
        QImage disimage = QImage(img_blur.data,img_blur.cols,img_blur.rows,img_blur.cols*img_blur.channels(),QImage::Format_Grayscale8);
        ui->label_2->setPixmap(QPixmap::fromImage(disimage.scaled(ui->label_2->width(),ui->label_2->height(),Qt::KeepAspectRatio)));//,Qt::KeepAspectRatio在后面加上这个就可以保证图片不变形
}

工程源代码:

待更新。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1231659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

U-boot(三):start.S

本文主要探讨x210的uboot的start.S文件,也是uboot启动的第一阶段。 头文件 config.h config.h x210_sd.h,由mkconfig脚本生成,包含了开发板的配置宏 rootkaxi-virtual-machine:~/qt_x210v3s_160307/uboot/include# cat config.h /* Automatically generate…

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于水基湍流优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

day15-Linux对文件系统的支持

1.Linux中使用文件系统分几个部分 1.1 有关于Linux中高速缓冲区的管理程序。 分页机制 buffer.c 1.2 文件系统的底层通用函数(对于硬盘的读写 分配 释放等&#xff0c;对于目录的节点管理 inode 内存与磁盘的映射) 1.3 对文件数据进行读写操作模块 (VFS&#xff1a;虚拟文件系统…

CSDN的文档编辑器使用

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

K8S(一)

一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes&#xff0c;简称 K8s&#xff0c;是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes 的目标是让部署容器化的 应用简单并且高效…

Upwork 新手使用指南——如何快速在Upwork上接单

Upwork 这个自由职业平台不知道大家听说过没&#xff0c;在 Upwork&#xff0c;如果你是自由职业者&#xff0c;你可以接单&#xff1b;如果你是客户&#xff0c;你可以找人干活。但对于新手来说&#xff0c;怎么使用 Upwork 并且用好 Upwork 是一大难题。因此今天给大家分享 U…

uvm环境获取系统时间的方法和使用案例

背景&#xff1a; 有时候我们想统计一下验证环境中某个步骤总共花费了多少时间&#xff0c;有什么比较方便的方法呢&#xff0c;利用$realtime理论上也是能做到的&#xff0c;不过这个和timescale绑定起来了&#xff0c;需要手动换算成单位是秒的数&#xff0c;现在提供一种利用…

数据分析基础之《jupyter notebook工具》

一、安装库 1、linux库 yum install python3-devel 2、python库 pip3 install -U matplotlib pip3 install -U numpy pip3 install -U pandas pip3 install -U TA-Lib pip3 install -U tables pip3 install -U notebook 3、如果TA-Lib安装不上&#xff0c;先手动安装依赖库 …

2019年计网408

第33题 OSI 参考模型的第 5 层&#xff08;自下而上&#xff09;完成的主要功能是()A. 差错控制B. 路由选择C. 会话管理D. 数据表示转换 本题考察开放系统互联参考模型的第五层完成的主要功能。开放系统互联参考模型是一个七层的体系结构。自下而上&#xff0c;依次是物理层、…

基于Vue+SpringBoot的校园电商物流云平台开源项目

项目编号&#xff1a; S 034 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S034&#xff0c;文末获取源码。} 项目编号&#xff1a;S034&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快…

小红书为什么没人看,小红书爆款标题怎么写?

作为快节奏的社会&#xff0c;人们追求的是不仅仅是高价值更是高性价比&#xff0c;和吸引度。而标题类似于门面&#xff0c;吸引程度自然作为重中之重。今天我们和大家分享下小红书为什么没人看&#xff0c;小红书爆款标题怎么写&#xff1f; 以母婴类型为例子&#xff0c;母婴…

笔记57:双向循环神经网络

本地笔记地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章&#xff1a;动手学深度学习~现代循环神经网络 a a a a a a a a a a a a

【活动通知】2023 Elastic Meetup 北京站将于12月2日下午1点30在北京召开

《2023 Elastic Meetup 北京站》活动将于 12 月 2 日下午 1 点 30 在北京市海淀区西北旺东路10号腾讯北京总部大楼213会议室举办&#xff0c;届时将有行业专家及知名企业分享他们在 Elasticsearch 应用中的经验与观点&#xff0c;带来最前沿的技术分享与思想碰撞。 请使用电脑浏…

SVG直线 <line>与折线 <polyline>代码示例

本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…

Win10 开始菜单、微软app和设置都打不开(未解决)

环境&#xff1a; Win10专业版 问题描述&#xff1a; Win10 开始菜单、微软app和设置都打不开,桌面个性话打开就报错&#xff0c;打开个性化该文件没有与之关联的程序来执行该操作 解决方案&#xff1a; 一般造成原因是MS-Settings文件系统错误 1.先重启电脑&#xff08;重…

吐槽一个 R package :DSS

TMD&#xff01;&#xff01;&#xff01; 前言 最近在整理WGBS分析的流程&#xff0c;下游需要找 Differentially Methylated Loci (DML) / Region (DMR)&#xff0c;类似普通转录组中的差异分析。之前看的一篇文章提到一个R package &#xff1a; DSS&#xff0c;看Biocond…

直播美颜SDK对比评测:技术原理与应用实践

直播行业蓬勃发展&#xff0c;其中&#xff0c;美颜滤镜技术在直播中扮演着至关重要的角色。本文将深入探讨不同直播美颜SDK的技术原理&#xff0c;并通过对比评测它们在实际应用中的表现&#xff0c;以揭示各SDK的优劣之处。 一、背景 随着直播技术的不断进步&#xff0c;直…

又欲又撩人,基于新版Bert-vits2V2.0.2音色模型雷电将军八重神子一键推理整合包分享

Bert-vits2项目近期炸裂更新&#xff0c;放出了v2.0.2版本的代码&#xff0c;修正了存在于2.0先前版本的重大bug&#xff0c;并且重炼了底模&#xff0c;本次更新是即1.1.1版本后最重大的更新&#xff0c;支持了三语言训练及混合合成&#xff0c;并且做到向下兼容&#xff0c;可…

新一代车载以太网传输技术研讨会(AEM)顺利圆满举行

时间定格在2023年11月17日&#xff0c;新一代车载以太网传输技术研讨会在东莞国际会展中心举行。来自相关的的企业几百家。当然&#xff0c;深圳维信仪器作为主办方&#xff08;AEM线束测试仪中国区总平台&#xff09;举优质的线束测试设备&#xff0c;不论是手持线束测试&…

在VSCode创建vue项目,出现“因为在此系统上禁止运行脚本”问题

问题&#xff1a;vue : 无法加载文件 C:\Users\***\***\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 ht tps:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 解决&#xff…