基于Qt OpenCV实现图像数据采集软件

 更新时间:2022年07月04日 15:05:06   作者:visual_eagle  
这篇文章主要为大家详细介绍了如何利用Qt+OpenCV实现图像数据采集软件,文中的示例代码讲解详细,对我学习或工作有一定参考价值,感兴趣的可以了解一下

效果图

示例代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTimer>
#include<QDebug>
#include<QDateTime>
#include<opencv2/opencv.hpp>

using namespace cv;
using namespace std;

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void updateLabel();//刷新label
    void on_button_getimage_start_clicked();

    void on_button_getimage_end_clicked();

    void on_button_opencapture_clicked();

private:
    Ui::Widget *ui;
    VideoCapture capture;
    QTimer *updatetimer;//视频刷新定时器
    Mat src;
    QImage image_src;
    bool saveflag;
    int i=0;
};
#endif // WIDGET_H

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    saveflag=false;
    this->setWindowTitle("image capturer");
    //关于刷新
    updatetimer=new QTimer(this);
    connect(updatetimer,&QTimer::timeout,this,&Widget::updateLabel);
}

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

//视频刷新
void Widget::updateLabel()
{
    if(!capture.isOpened())
    {
        qDebug()<<"capture error!";
        return;
    }
    else
    {
        capture>>src;
        if(src.empty())
        {
            qDebug()<<"src is empty!";
            return;
        }
        else
        {
            if(saveflag)
            {
                QDateTime now_time = QDateTime::currentDateTime();
                QString file_n_qstr="D:\\image_get\\cup\\"+now_time.toString("yyyyMMddhhmmss")+QString::number(i)+".jpg";
                string file_n_str=file_n_qstr.toStdString();
                imwrite(file_n_str,src);
                qDebug()<<file_n_qstr;
                i++;
                //save
            }
            //原图
            image_src =QImage((const unsigned char*)(src.data),src.cols,src.rows,src.cols*src.channels(),QImage::Format_BGR888);
            ui->label_show->setPixmap(QPixmap::fromImage(image_src));
        }
    }
}

void Widget::on_button_getimage_start_clicked()
{
    qDebug()<<"on_button_getimage_start_clicked";
    saveflag=true;
}

void Widget::on_button_getimage_end_clicked()
{
    qDebug()<<"on_button_getimage_end_clicked";
    saveflag=false;
}

void Widget::on_button_opencapture_clicked()
{
    qDebug()<<"start button is clicked";

    capture.open(0);
    if(!capture.isOpened())
    {
        qDebug()<<"open capture failed!";
    }
    else
    {
        updatetimer->start(30);
        qDebug()<<"open capture success!";
    }
}

到此这篇关于基于Qt OpenCV实现图像数据采集软件的文章就介绍到这了,更多相关Qt OpenCV图像数据采集软件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家

相关文章

  • C++ 实现带监视哨的顺序查找算法

    C++ 实现带监视哨的顺序查找算法

    这篇文章主要介绍了C++ 实现带监视哨的顺序查找算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 一篇文章教你自己动手实现C语言库函数

    一篇文章教你自己动手实现C语言库函数

    这篇文章主要介绍了C语言库函数的相关资料,小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09
  • C/C++实现字符串模糊匹配

    C/C++实现字符串模糊匹配

    本文分别给大家介绍了2个C++在Linux平台和windows平台下实现字符串模糊匹配的方法,基本的核心思想都是一样的,均是使用fnmatch函数,有需要的小伙伴可以参考下。
    2016-04-04
  • C语言实现JSON解析器的方法步骤

    C语言实现JSON解析器的方法步骤

    JSON是一种非常流行的数据格式,本文主要介绍了C语言实现JSON解析器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • C语言实现简单回声服务器

    C语言实现简单回声服务器

    这篇文章主要为大家详细介绍了C语言实现简单回声服务器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • QT5编译使用QFtp的方法步骤

    QT5编译使用QFtp的方法步骤

    这篇文章主要介绍了QT5编译使用QFtp的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • C语言递归应用实现扫雷游戏

    C语言递归应用实现扫雷游戏

    这篇文章主要为大家详细介绍了C语言递归应用实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C语言实现通讯录的示例代码

    C语言实现通讯录的示例代码

    这篇文章主要为大家详细介绍了如何录音C语言实现一个简单的通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-10-10
  • Qt实现闹钟小程序

    Qt实现闹钟小程序

    这篇文章主要为大家详细介绍了Qt实现闹钟小程序,利用Qt的designer设计需要的闹钟界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • C语言中的三种循环语句

    C语言中的三种循环语句

    这篇文章主要介绍了C语言中的三种循环语句,在C语言中循环可分为3中,while循环、do - while循环、for 循环。下面小编就来为大家讲解这三种循环语句,需要的朋友可以参考一下,希望对你有所帮助
    2021-10-10

最新评论