服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 基于Qt OpenCV实现图像数据采集软件

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

2023-02-21 16:36visual_eagle C/C++

这篇文章主要为大家详细介绍了如何利用Qt+OpenCV实现图像数据采集软件,文中的示例代码讲解详细,对我学习或工作有一定参考价值,感兴趣的可以了解一下

效果图

基于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图像数据采集软件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家

原文链接:https://blog.csdn.net/visual_eagle/article/details/125569682

延伸 · 阅读

精彩推荐
  • C/C++C语言的冒泡排序和快速排序算法使用实例

    C语言的冒泡排序和快速排序算法使用实例

    这篇文章主要介绍了C语言的冒泡排序和快速排序算法使用实例,示例题目也是ACM练习当中的基础习题,需要的朋友可以参考下...

    低调小一10662021-03-07
  • C/C++C++深入细致探究二叉搜索树

    C++深入细致探究二叉搜索树

    二叉搜索树是以一棵二叉树来组织的。每个节点是一个对象,包含的属性有left,right,p和key,其中,left指向该节点的左孩子,right指向该节点的右孩子,...

    Suk-god6842022-12-08
  • C/C++C语言实现飞机大战小游戏完整代码

    C语言实现飞机大战小游戏完整代码

    大家好,本篇文章主要讲的是C语言实现飞机大战小游戏完整代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下...

    kfc++8132022-09-07
  • C/C++详解C++实现链表的排序算法

    详解C++实现链表的排序算法

    链表排序思想和数组排序类似,区别就是数组遍历容易,数据交换也容易;链表(单项链表)只能一个方向遍历,不能逆序遍历,且不能随机访问,所以排序...

    Ouyang_Lianjun5522021-11-15
  • C/C++用C++面向对象的方式动态加载so的方法

    用C++面向对象的方式动态加载so的方法

    下面小编就为大家带来一篇用C++面向对象的方式动态加载so的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    C++教程网10852021-04-25
  • C/C++C语言链表实现贪吃蛇游戏

    C语言链表实现贪吃蛇游戏

    这篇文章主要为大家详细介绍了C语言链表实现贪吃蛇游戏源码,适合C语言入门者学习阅读,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    J博士5712021-06-06
  • C/C++C语言代码实现俄罗斯方块

    C语言代码实现俄罗斯方块

    这篇文章主要为大家详细介绍了C语言代码实现俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    轮回/lover6682021-10-20
  • C/C++实例讲解C++编程中的虚函数与虚基类

    实例讲解C++编程中的虚函数与虚基类

    这篇文章主要介绍了C++编程中的虚函数与虚基类的实例讲解,虚函数与虚基类的使用是C++入门学习中的基础知识,需要的朋友可以参考下...

    孙东4762021-03-25