vs+opencv+QT调试程序

这篇具有很好参考价值的文章主要介绍了vs+opencv+QT调试程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2021-09-28vs+opencv+QT简单的图像处理工程_opencv 用qt还是vs_二两山栀子的博客-CSDN博客

【vs+opencv+Qt搭建简单的图像处理界面】https://www.bilibili.com/video/BV16T411j7XQ?vd_source=0aeb782d0b9c2e6b0e0cdea3e2121eba

调试过程一直出现这种问题,后来改DEBUG为release就可以了

vs+opencv+QT调试程序,opencv,qt,人工智能

mainwindow.hpp

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QLabel>
#include <QMainWindow>
#include <QFileDialog>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

namespace Ui {
    class MainWindow;
    class mainwindowClass;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget* parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();
private:
    QImage MatToQImage(const cv::Mat& mat);				// MAT类型 转 QImage类型
    void display_MatInQT(QLabel* label, cv::Mat mat);	// MAT对象 QT显示

private:
    Ui::mainwindowClass* ui;
    Mat image;
    Mat mat_Gaussian;
    Mat gray;
};

#endif // MAINWINDOW_H#pragma once

mainwindow.cpp文章来源地址https://www.toymoban.com/news/detail-695758.html

#include "mainwindow.hpp"
#include "ui_mainwindow.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget* parent) :
    QMainWindow(parent),
    ui(new Ui::mainwindowClass)
{
    ui->setupUi(this);
    ui->pushButton_2->setEnabled(false);
    ui->pushButton_3->setEnabled(false);
    ui->pushButton_4->setEnabled(false);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    //调用窗口打开文件
    ui->label->clear();
    ui->label_1->clear();
    QString filename = QFileDialog::getOpenFileName(this,
        tr("open image"),
        ".",
        tr("Image file(*.png *.jpg *.bmp)"));
    image = imread(filename.toLocal8Bit().data());
    if (image.data) {
        ui->pushButton_2->setEnabled(true);
        ui->pushButton_3->setEnabled(true);
        ui->pushButton_4->setEnabled(true);
        // 通过 lable 方式显示图片
        display_MatInQT(ui->label, image);
    }
    else
    {
        QMessageBox::information(this, tr("提示"), tr("未成功载入图片!"), QMessageBox::Ok);
    }
}
void MainWindow::on_pushButton_2_clicked()
{
    ui->label_1->clear();

    if (image.data)
    {
        // 高斯模糊
        GaussianBlur(image, mat_Gaussian, Size(29, 29), 0, 0);
        display_MatInQT(ui->label_1, mat_Gaussian);
    }
    else
    {
        QMessageBox::information(this, tr("提示"), tr("未成功载入图片!"), QMessageBox::Ok);
    }

}
void MainWindow::on_pushButton_3_clicked()
{
    ui->label_1->clear();

    if (image.data)
    {
        // 灰度化
        cvtColor(image, gray, COLOR_BGR2GRAY);
        display_MatInQT(ui->label_1, gray);
    }
    else
    {
        QMessageBox::information(this, tr("提示"), tr("未成功载入图片!"), QMessageBox::Ok);
    }

}
void MainWindow::on_pushButton_4_clicked()
{
    ui->label_1->clear();

    if (image.data)
    {
        // 边缘检测

        Canny(image, gray, 150, 100, 3);
        display_MatInQT(ui->label_1, gray);
    }
    else
    {
        QMessageBox::information(this, tr("提示"), tr("未成功载入图片!"), QMessageBox::Ok);
    }

}
QImage MainWindow::MatToQImage(const cv::Mat& mat)
{

    // 8-bits unsigned, NO. OF CHANNELS = 1
    if (mat.type() == CV_8UC1)
    {
        QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);
        // Set the color table (used to translate colour indexes to qRgb values)
        image.setColorCount(256);
        for (int i = 0; i < 256; i++)
        {
            image.setColor(i, qRgb(i, i, i));
        }
        // Copy input Mat
        uchar* pSrc = mat.data;
        for (int row = 0; row < mat.rows; row++)
        {
            uchar* pDest = image.scanLine(row);
            memcpy(pDest, pSrc, mat.cols);
            pSrc += mat.step;
        }
        return image;
    }
    // 8-bits unsigned, NO. OF CHANNELS = 3
    else if (mat.type() == CV_8UC3)
    {
        // Copy input Mat
        const uchar* pSrc = (const uchar*)mat.data;
        // Create QImage with same dimensions as input Mat
        QImage image(pSrc, mat.cols, mat.rows, (int)mat.step, QImage::Format_RGB888);
        return image.rgbSwapped();
    }
    else if (mat.type() == CV_8UC4)
    {
        //qDebug() << "CV_8UC4";
        // Copy input Mat
        const uchar* pSrc = (const uchar*)mat.data;
        // Create QImage with same dimensions as input Mat
        QImage image(pSrc, mat.cols, mat.rows, (int)mat.step, QImage::Format_ARGB32);
        return image.copy();
    }
    else
    {
        //qDebug() << "ERROR: Mat could not be converted to QImage.";
        return QImage();
    }
}
// 
void MainWindow::display_MatInQT(QLabel* label, Mat mat)
{

    label->setPixmap(QPixmap::fromImage(MatToQImage(mat)).scaled(label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));

}

到了这里,关于vs+opencv+QT调试程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS2022 And QtCreator10 调试 Qt 源码教程

    简 述: 记录使用 Visual Studo 2022 和 QtCreator10 调试 Qt 5.15 源码和 加载 .pdb 的方法。 本文初发于 “ 偕臧的小站 ”,同步转载于此。 源码 :*.h *.cpp 符号调试包 :*.pdb (属 Windows 专有) 动态链接库: *.dll 静态链接库: *.lib (通常是前者,也可以是 .dll 的符号信息,编译时刻使用

    2024年02月12日
    浏览(26)
  • VS2019+QT5.12.9环境下,调试QString无显示解决

    1、搜索 qt5.natvis.xml 文件,路径一般为C:UsersieskongAppDataLocalMicrosoftVisualStudio16.0_cb8bc8a7Extensionsoih0nd55.5jrqt5.natvis.xml,【建议使用Everything这个工具搜索] 2、复制到C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7PackagesDebuggerVisualizers目录下并重命名为qt5.natvis即可(如果

    2024年02月09日
    浏览(31)
  • 人工智能-OpenCV+Python实现人脸识别(人脸检测)

    在OpenCV中使用Haar特征检测人脸,那么需要使用OpenCV提供的xml文件(级联表)在haarcascades目录下。这张级联表有一个训练好的AdaBoost训练集。首先要采用样本的Haar特征训练分类器,从而得到一个级联的AdaBoost分类器。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征

    2024年02月06日
    浏览(81)
  • Sparrow vs ChatGPT:人工智能霸权之战,谷歌 DeepMind vs 微软 OpenA谁将赢得下一代互联网之战

    随着 Google DeepMind 的“Sparrow”将在今年晚些时候进入“私人测试版”,人工智能世界正在兴奋地嗡嗡作响。ChatGPT 病毒式传播,让 OpenAI 广受欢迎。微软甚至达成了一项价值 100 亿美元的交易,将 ChatGPT 集成到其现有的软件产品中。麻雀可能是谷歌正在寻找的答案。但是,Spa

    2024年02月04日
    浏览(35)
  • Qt+OpenCV+VTK在VS2017中配置路径

    Pytorch版本与libtorch版本要一一对应。

    2024年02月14日
    浏览(33)
  • 音视频源码调试前准备vs2019+qt5.15.2搭建可调试环境

    安装vs2019+qt,并且在windows环境上安装ffmpeg,尝试使用qt+cdb进行调试,尝试使用vs2019加载qt的程序。 安装VS2019+5.12.2qt环境,并进行测试。 1:安装Visual Studio 2019, a.从官网下载,或者vs2019社区版本下载地址 https://www.jb51.net/softs/700418.htm ====》 安装时必须勾选 Desktop development with C++

    2024年02月05日
    浏览(39)
  • VS2022+CMAKE+OPENCV+QT+PCL安装及环境搭建

    VS2022安装: Visual Studio 2022安装教程(千字图文详解),手把手带你安装运行VS2022以及背景图设置_vs安装教程_我不是大叔丶的博客-CSDN博客 CMAKE配置: win11下配置vscode+cmake_心儿痒痒的博客-CSDN博客 OPENCV配置: VS2022 + Opencv4.5.5 + C++ 配置_愿飞翔的鱼儿的博客-CSDN博客 VS2022安装Im

    2024年02月09日
    浏览(44)
  • VS2019+OpenCV+Qt5.15.2安装及工程配置

    目录 一、下载链接 1.1 VS2019下载安装 1.2 OpenCV下载安装 1.3 Qt5.15下载安装 二、工程环境配置 2.1 OpenCV环境配置 2.1.1  环境变量配置 2.1.2 工程属性表配置  2.1.3 重启vs测试  2.2 Qt环境配置 2.2.1 Qt Creator设置  2.2.2 VS2019配置  2.2.3 创建Qt项目 2.2.4 UI 设计配置 该文件仅 1.39 MB,是 VS

    2024年02月16日
    浏览(43)
  • 转换视觉想象力:Adobe Firefly vs Midjourney V5——尖端人工智能文本转图像服务的综合比较

    介绍 Adob​​e Firefly 和 Midjourney V5:人工智能驱动的创意对决 我们一直在等待的时刻终于到来了:Adobe Firefly 来了,是时候用它来测试新升级的 Midjourney V5 了。 来自不同类别的 9个相同提示。谁是你的赢家?在评论中让我知道。 秋天宁静的日本花园:期待美丽的秋天色彩、传

    2024年02月16日
    浏览(33)
  • 人工智能算法工程师面试题——之OpenCV必背汇总(四)

    在OpenCV中,图像融合通常指的是将两个或更多图像以某种方式组合在一起,以创建一个新的图像。这个过程可以用于多种目的,比如艺术效果、图像修复或信息增强。实现图像融合的一种常见方法是通过加权求和,也就是每个像素位置上将不同图像的像素值按照一定的权重相

    2024年02月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包