main

#include "mainwindow.h"#include <QApplication>
#include <QTextCodec>
#include <Windows.h>using namespace std;
int main(int argc, char *argv[])
{QApplication a(argc, argv);//编码格式:设备端不一定能识别GBK,一劳永逸(UTF-8)QTextCodec * codec = QTextCodec::codecForName("GBK");QTextCodec::setCodecForLocale(codec);//调试窗口AllocConsole();freopen("CONOUT$","w",stdout);//设置程序的CPU的处理优先级SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS );//主窗口MainWindow w;w.show();return a.exec();
}

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QList>
#include <QDateTime>
#include <QCamera>
#include <QCameraInfo>
#include <QUrl>
#include <Windows.h>
#include <QTimer>
#include <QImage>
#include <opencv2/opencv.hpp>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_ScanDevice_clicked();void on_pushButton_ConnectDevice_clicked();void on_pushButton_clicked();void on_pushButton_DisConnectDevice_clicked();public slots:void ReadFrame();private:Ui::MainWindow *ui;//用来截图的控件cv::VideoCapture capture;//定时器:刷新频率QTimer *timer;//存放一帧图像cv::Mat frame;private://用来扫描本地有多少摄像头QCamera*m_Camera;QList<QCameraInfo>m_CameraList;};
#endif // MAINWINDOW_H

源文件

#include "mainwindow.h"
#include "ui_mainwindow.h"using namespace cv;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);m_Camera=NULL;m_CameraList.clear();timer=new QTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(ReadFrame()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_ScanDevice_clicked()
{//扫描本地设备ui->comboBox->clear();m_CameraList = QCameraInfo::availableCameras();for (int i = 0; i<m_CameraList.size() ;i++ ) {QString devName = m_CameraList.at(i).description();ui->comboBox->addItem(devName);}
}void MainWindow::on_pushButton_ConnectDevice_clicked()
{//open的参数是摄像头的编号,如果有多个摄像头则:0,1, 2, 3...bool b = capture.open(ui->comboBox->currentIndex());if(b == false){return;}//摄像头打开失败timer->start(20);//开始计时
}void MainWindow::ReadFrame()
{//取一帧图像capture>>frame;//将视频显示在label上QImage image=QImage((const uchar*)frame.data,frame.cols,frame.rows,QImage::Format_RGB888).rgbSwapped();ui->label->setPixmap(QPixmap::fromImage(image));
}void MainWindow::on_pushButton_clicked()
{QString filePath = QString("C:/Users/38912/Desktop/");QString fileName =QDateTime::currentDateTime().toString("yyyy_MM_dd_HH_mm_ss");QString fileSuffic= QString(".jpg");QString fileInfo = filePath+fileName+fileSuffic;//将图像写到本地文件imwrite(fileInfo.toStdString().c_str(),frame);
}//关闭摄像头
void MainWindow::on_pushButton_DisConnectDevice_clicked()
{capture.release();
}

ui文件

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>602</width><height>442</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><layout class="QVBoxLayout" name="verticalLayout"><item><widget class="QWidget" name="widget_2" native="true"><layout class="QHBoxLayout" name="horizontalLayout"><item><widget class="QPushButton" name="pushButton_ScanDevice"><property name="text"><string>扫描设备</string></property></widget></item><item><widget class="QComboBox" name="comboBox"><property name="sizePolicy"><sizepolicy hsizetype="Expanding" vsizetype="Fixed"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property></widget></item><item><widget class="QPushButton" name="pushButton_ConnectDevice"><property name="text"><string>连接设备</string></property></widget></item><item><widget class="QPushButton" name="pushButton_DisConnectDevice"><property name="text"><string>断开设备</string></property></widget></item></layout></widget></item><item><widget class="QWidget" name="widget_3" native="true"><layout class="QHBoxLayout" name="horizontalLayout_2"><item><widget class="QPushButton" name="pushButton"><property name="text"><string>截图</string></property></widget></item></layout></widget></item><item><widget class="QLabel" name="label"><property name="sizePolicy"><sizepolicy hsizetype="Preferred" vsizetype="Expanding"><horstretch>0</horstretch><verstretch>0</verstretch></sizepolicy></property><property name="font"><font><pointsize>34</pointsize></font></property><property name="text"><string>图像显示区</string></property><property name="alignment"><set>Qt::AlignCenter</set></property></widget></item></layout></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>602</width><height>23</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

OpenCV摄像头-截图相关推荐

  1. opencv摄像头截图照片分别保存到不同文件夹

    需求背景分析 背景描述:编程了机器人抓取物体旋转的不同角度和位姿,自动采集照片,保存到相应的文件夹.比如现在机器人转动20个角度(每个角度隔10ms存1张照片,每个角度存3张),每个角度一个文件夹,就 ...

  2. AI 质检学习报告——实践篇——第三步:python利用OpenCV打开摄像头截图后实现图片识字

    AI 质检学习报告--实践篇--第一步:python利用OpenCV打开摄像头并截图 AI 质检学习报告--实践篇--第二步:实现图片识字 前边两篇实践已经分别实现了利用OpenCV打开摄像头并截图和 ...

  3. 使用Python和OpenCV进行拍摄截图

    使用Python和OpenCV进行拍摄截图 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用OpenCV,Python和PyAutoGui库拍摄截图. 使用pyautogui,可以轻 ...

  4. 【目标识别】--【截图程序】海康摄像头sdk二次开发自动多摄像头截图程序

    目录 背景: 1.问题 2.截图程序自动化和多通道实现 3.摄像头参数灵活化 至此已经全部结束,运行程序可以看到 背景: 目标识别需要对每一帧图像进行检测,因此我们需要将摄像头获取的视频流转换成单帧图 ...

  5. Unity中的截图方法(包括全屏截图、区域截图、Camera截图和摄像头截图)

    Unity中的截图方法(包括全屏截图.区域截图.Camera截图和摄像头截图) Application.CaptureScreenshot ScreenCapture Texture2D.ReadPi ...

  6. 树莓派Arduino小车打开Opencv摄像头

    经过前面一篇的步骤我们已经安装好了Opencv,那么我们就来使用下. 一.打开树莓派设置 sudo raspi-config选择第三条 把里面设置全部打开 二.尝试代码打开Opencv摄像头 创建一个 ...

  7. c语言 读取摄像头图片分辨颜色,opencv摄像头捕获识别颜色

    本文实例为大家分享了opencv摄像头捕获识别颜色的具体代码,供大家参考,具体内容如下 #include "highgui.h" #include "iostream&q ...

  8. opencv摄像头拍摄视频实时边缘提取(Canny)

    opencv摄像头拍摄视频实时边缘提取(Canny) 上一篇笔者写过视频文件的边缘提取,这一篇是opencv调用摄像头实时提取的干货(此片参考过其他大佬代码,如有侵权请联系) import cv2 i ...

  9. opencv摄像头闪退问题总结,解决一闪而过的问题

    #opencv摄像头闪退问题总结,解决播放视频时一闪而过的问题 总结: 1.视频解码问题 出现这种情况一般是你的电脑里缺少XviD codec(视频编解码器),也就是opencv打开视频之前必须将视频 ...

最新文章

  1. 两成开发者月薪超 1.7 万、算法工程师最紧缺! | 中国开发者年度报告
  2. c语言温度查表程序,温度计C语言程序.doc
  3. hadoop datanode启动失败
  4. Acwing -- 单调队列优化的DP问题
  5. 15个创意示例教您如何自定义 404 错误页面
  6. 虚拟机性能测试:八 性能分析—Windows体验指数
  7. Sendmail服务器的配置
  8. 图像处理——SIFT算法
  9. 求解多项式的极限问题
  10. ac ap方案 华为_华为AC AP无线配置方法
  11. 赛思互动:管理学最重要的八大定理
  12. 基于M0 MCU的无感FOC航模电机控制
  13. Mysql大文本类型
  14. Easy Touch 5 简单使用
  15. defs(defs是什么意思)
  16. 解决显示“此图片来自微信公众平台未经允许不可引用”错误图片
  17. LeetCode 单调栈练习题归纳总结
  18. 一个int型指针占几个字节,跟指针的类型有关系吗?(2020.11)
  19. python 直方图均衡化
  20. 数据库唯一性约束(Unique Constraint)

热门文章

  1. 前端学习——CSS布局
  2. Maven中央仓库地址(实用版)
  3. 线性代数学习笔记(二十二)——向量间的线性关系(二)
  4. Invalid HTTP_HOST header: ‘testserver‘. You may need to add ‘testserver‘ to ALLOWED_HOSTS
  5. Java微信开发_Exception_03_errcode:48001 errmsg:api unauthorized hint
  6. 浅析image,imagesc,imshow的用法
  7. 实战项目:餐厅订单数据分析:订单维度和时间维度
  8. 计算机常用芯片,笔记本电脑常用芯片大全
  9. Python open()函数 小白|教程
  10. C#--WinForm--表格数据控件DataGridView--绑定模式