文章目录

  • 一、创建项目&UI
  • 二、函数定义与演示

一、创建项目&UI

开发方式:使用UI设计布局;转到槽
拖拽组件:类与布局

二、函数定义与演示

.pro文件添加包含目录与库目录

INCLUDEPATH += E:\opencv3\opencv\sources\build\install\include\E:\opencv3\opencv\sources\build\install\include\opencv2\E:\opencv3\opencv\sources\build\install\include\opencvLIBS += -L E:\opencv3\opencv\sources\build\install\x64\mingw\lib\libopencv_*.a

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QFileDialog>
#include <QFile>
#include <opencv2/opencv.hpp>
#include <QMainWindow>
#include <QTimer>
#include <QImage>
#include <QPixmap>QPixmap Mat2Image(cv::Mat src);QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void readFrame(); //自定义信号处理函数//以下函数为Ui生成void on_pushButton_openImage_clicked();void on_pushButton_openCamera_clicked();void on_pushButton_closeCamera_clicked();void on_pushButton_isAlg_clicked();void on_pushButton_photoes_clicked();private:Ui::MainWindow *ui;QTimer *timer;QImage *img;cv::VideoCapture *videocapture;cv::Mat MatFrame;bool isAlgo;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"cv::Mat src;
cv::Mat gray;
cv::Mat tmp;
cv::Mat dst;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);timer = new QTimer(this);img = new QImage();connect(timer,SIGNAL(timeout()),this,SLOT(readFrame()));isAlgo = false;
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::readFrame()
{videocapture->read(MatFrame);if(isAlgo){cv::cvtColor(MatFrame,gray,cv::COLOR_BGR2GRAY);cv::Canny(gray,dst,30,30*2);}else {dst = MatFrame.clone();}QPixmap qpixmap = Mat2Image(dst);ui->label->setPixmap(qpixmap);
}void MainWindow::on_pushButton_openImage_clicked()
{QString filename = QFileDialog::getOpenFileName(this,"打开图像","","Image file(*.png *.jpg *.jpeg *.bmp)");if(!QFile::exists(filename)){return;}ui->statusbar->showMessage(filename);cv::Mat src = cv::imread(filename.toLatin1().data());if(src.empty()){ui->statusbar->showMessage("图像不存在!");return;}cv::Mat temp;if(src.channels()==4)cv::cvtColor(src,temp,cv::COLOR_BGRA2RGB);else if (src.channels()==3)cv::cvtColor(src,temp,cv::COLOR_BGR2RGB);elsecv::cvtColor(src,temp,cv::COLOR_GRAY2RGB);QImage img = QImage((uchar*)temp.data,temp.cols,temp.rows,temp.step, QImage::Format_RGB888);ui->label->setPixmap(QPixmap::fromImage(img));ui->label->resize(ui->label->pixmap()->size());filename.clear();
}void MainWindow::on_pushButton_openCamera_clicked()
{videocapture = new cv::VideoCapture(0);timer->start(33);
}QPixmap Mat2Image(cv::Mat src)
{QImage img;if(src.channels() ==3){cv::cvtColor(src,tmp,cv::COLOR_BGR2RGB);img = QImage((uchar*)tmp.data,tmp.cols,tmp.rows,tmp.step,QImage::Format_RGB888);}else {img = QImage((uchar*)src.data,src.cols,src.rows,src.step,QImage::Format_Grayscale8);}QPixmap qimg = QPixmap::fromImage(img);return qimg;
}void MainWindow::on_pushButton_closeCamera_clicked()
{timer->stop();videocapture->release();
}void MainWindow::on_pushButton_photoes_clicked()
{QPixmap qpixmap = Mat2Image(dst);ui->label_2->setPixmap(qpixmap);
}void MainWindow::on_pushButton_isAlg_clicked()
{isAlgo = isAlgo==true?false:true;
}

演示效果:

拓展阅读:
https://blog.csdn.net/sinat_35845281/article/details/94204074
https://blog.csdn.net/xiaolong1126626497/article/details/105295367

QT + OpenCV 使用摄像头相关推荐

  1. Qt+OpenCV读取摄像头视频、本地视频、网络视频流Demo

    Qt+OpenCV读取摄像头视频.本地视频.网络视频流Demo

  2. buildroot+qt+qcamrea+opencv打开摄像头进行拍照录像保存功能

    相关参考 如何用FFmpeg API采集摄像头视频和麦克风音频,并实现录制文件的功能_爱写代码的自由人-CSDN博客_ffmpeg 摄像头 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术. ...

  3. C++/Qt 使用OpenCV打开摄像头,旋转视频,计算fps

    C++/Qt 使用OpenCV打开摄像头,旋转视频,计算fps 设置摄像头参数 不要随意修改,同时也不一样会修改成功,需要根据实际摄像头的参数选择设置 /*设置摄像头参数 不要随意修改capture. ...

  4. QT+OpenCV照片动画风格转换

    前言 用OpenCV将摄像头采集到的图片转换成动画风格,加上了QT界面.这个小实验并不复杂,后面直接贴代码. 代码 在QT creator中建的工程,只上部分比较重要的代码了,其他都是一样的. mai ...

  5. (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述 http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设 http://www ...

  6. OpenCV~捕获摄像头 帧率fps和waitkey函数 问题

    本文分析在使用OpenCV捕获摄像头时发现的两个问题: 使用capture.get(CV_CAP_PROP_FPS)方法获取帧率为0! waitKey()函数有几个作用?改变它的参数大小会影响计算得到 ...

  7. 使用opencv调用摄像头然后录制视频和保存文件

    用 OpenCV 开发经常用到摄像头,从 Camera获取图像后用OpenCV的算法进行处理,但是一般我们处理完图像之后,还需要将视频保存下来,比如保存成avi.mp4等格式.怎么保存呢?其实Open ...

  8. QT多线程调用摄像头录屏软件开发

    QT多线程调用摄像头录屏软件开发 文章目录 QT多线程调用摄像头录屏软件开发 前言 一.调用摄像头 二.UI界面设计 1.Button 2.鼠标选择矩形框录制 3.ffmpeg命令行压缩 总结 前言 ...

  9. Qt+OpenCV之图片中的人脸识别及人脸抠图

    效果 OpenCV函数知识点 imread() 功能:载入图像 函数原型:Mat cv::imread ( const String & filename, int flags = IMREA ...

  10. QT OpenCV Linux

    OpenCV with Qt OpenCV Tutorials-Installation in Linux          use this tutorial to install OpenCV i ...

最新文章

  1. IC/FPGA笔试题分析(五)
  2. 雷军:小米二为何不用1300万像素相机_TechWeb
  3. [开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
  4. LeetCode 29. 两数相除(位运算)
  5. 论文阅读:超高分辨率图像中快速、准确的条码检测
  6. WebView 的新增安全功能
  7. 2014年DevExpress使用教程合集
  8. c语言发票的编码,关于增值税发票中商品税收分类编码对应的简称
  9. Linux下的指令:tail
  10. 管理造成的问题:京东商城后台语言改用java
  11. esxi安装系统ndows,ESXI 安装 Windows Server 2012过程
  12. 服务器BMC管理工具ipmitool的安装和使用
  13. 【论文阅读】Multi-Modal Sarcasm Detection Based on Contrastive Attention Mechanism
  14. LAMP环境和wordpress站点搭建
  15. Java——将汉字转为汉语拼音工具类
  16. ECSHOP去掉版权
  17. 《点睛:ActionScript3.0游戏互动编程》——第2章 融会贯通—大话图层样式与滤镜2.1 Photoshop图层样式初体验...
  18. 某Boss招聘网站的反反爬机制详解
  19. 中国人平均23岁初吻 消费文化与儒家文明碰撞
  20. UGNXCAM加工模块二次开发视频教程全集(全套视频教程)_NXopen-UG二次开发_新浪博客

热门文章

  1. matlab dll 反编译,libmx.dll
  2. 【PS | 学习】毛坯乡间图打造复古美式电影海报图
  3. Builder模式创建实体类
  4. 屋面光伏荷载计算机构,有关光伏发电屋顶荷载以及预判方法
  5. 360安全卫士 免杀
  6. gsp计算机系统内审结论,GSP计算机系统内审表.docx
  7. 新手如何学习PLC编程?
  8. 电力电子,电机控制系统的建模与仿真
  9. 利用数据细分目标客户群
  10. c语言中负数参与除法,C语言中负数除法与右移取整问题