QT + OpenCV 使用摄像头
文章目录
- 一、创建项目&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 使用摄像头相关推荐
- Qt+OpenCV读取摄像头视频、本地视频、网络视频流Demo
Qt+OpenCV读取摄像头视频.本地视频.网络视频流Demo
- buildroot+qt+qcamrea+opencv打开摄像头进行拍照录像保存功能
相关参考 如何用FFmpeg API采集摄像头视频和麦克风音频,并实现录制文件的功能_爱写代码的自由人-CSDN博客_ffmpeg 摄像头 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术. ...
- C++/Qt 使用OpenCV打开摄像头,旋转视频,计算fps
C++/Qt 使用OpenCV打开摄像头,旋转视频,计算fps 设置摄像头参数 不要随意修改,同时也不一样会修改成功,需要根据实际摄像头的参数选择设置 /*设置摄像头参数 不要随意修改capture. ...
- QT+OpenCV照片动画风格转换
前言 用OpenCV将摄像头采集到的图片转换成动画风格,加上了QT界面.这个小实验并不复杂,后面直接贴代码. 代码 在QT creator中建的工程,只上部分比较重要的代码了,其他都是一样的. mai ...
- (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述 http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设 http://www ...
- OpenCV~捕获摄像头 帧率fps和waitkey函数 问题
本文分析在使用OpenCV捕获摄像头时发现的两个问题: 使用capture.get(CV_CAP_PROP_FPS)方法获取帧率为0! waitKey()函数有几个作用?改变它的参数大小会影响计算得到 ...
- 使用opencv调用摄像头然后录制视频和保存文件
用 OpenCV 开发经常用到摄像头,从 Camera获取图像后用OpenCV的算法进行处理,但是一般我们处理完图像之后,还需要将视频保存下来,比如保存成avi.mp4等格式.怎么保存呢?其实Open ...
- QT多线程调用摄像头录屏软件开发
QT多线程调用摄像头录屏软件开发 文章目录 QT多线程调用摄像头录屏软件开发 前言 一.调用摄像头 二.UI界面设计 1.Button 2.鼠标选择矩形框录制 3.ffmpeg命令行压缩 总结 前言 ...
- Qt+OpenCV之图片中的人脸识别及人脸抠图
效果 OpenCV函数知识点 imread() 功能:载入图像 函数原型:Mat cv::imread ( const String & filename, int flags = IMREA ...
- QT OpenCV Linux
OpenCV with Qt OpenCV Tutorials-Installation in Linux use this tutorial to install OpenCV i ...
最新文章
- IC/FPGA笔试题分析(五)
- 雷军:小米二为何不用1300万像素相机_TechWeb
- [开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
- LeetCode 29. 两数相除(位运算)
- 论文阅读:超高分辨率图像中快速、准确的条码检测
- WebView 的新增安全功能
- 2014年DevExpress使用教程合集
- c语言发票的编码,关于增值税发票中商品税收分类编码对应的简称
- Linux下的指令:tail
- 管理造成的问题:京东商城后台语言改用java
- esxi安装系统ndows,ESXI 安装 Windows Server 2012过程
- 服务器BMC管理工具ipmitool的安装和使用
- 【论文阅读】Multi-Modal Sarcasm Detection Based on Contrastive Attention Mechanism
- LAMP环境和wordpress站点搭建
- Java——将汉字转为汉语拼音工具类
- ECSHOP去掉版权
- 《点睛:ActionScript3.0游戏互动编程》——第2章 融会贯通—大话图层样式与滤镜2.1 Photoshop图层样式初体验...
- 某Boss招聘网站的反反爬机制详解
- 中国人平均23岁初吻 消费文化与儒家文明碰撞
- UGNXCAM加工模块二次开发视频教程全集(全套视频教程)_NXopen-UG二次开发_新浪博客