iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储
  • 545
分享到

VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储

2023-06-15 06:06:44 545人浏览 八月长安
摘要

这篇文章主要介绍了VS2017+Qt5+OpenCV3.4如何调用摄像头拍照并存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Qt的ui界面,找着画就好头文件直

这篇文章主要介绍了VS2017+Qt5+OpenCV3.4如何调用摄像头拍照并存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

 Qt的ui界面,找着画就好

VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储

VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储

头文件直接贴出,之后有时间慢慢解释吧

#pragma once #include <QtWidgets/QWidget>#include "ui_camaraGet.h" #ifndef CAMARAGET_H#define CAMARAGET_H #include <opencv2\core\core.hpp>#include <QWidget>#include <QImage>#include <QTimer>     // 设置采集数据的间隔时间  #include <QGraphiCSScene>  #include <QGraphicsView>   #include <highgui/highgui_c.h>  //包含opencv库头文件 #include <opencv2\imgproc\imgproc.hpp>#include <opencv2\core\core.hpp>#include <opencv2\highgui\highgui.hpp>  //opencv申明 #include <opencv/cv.hpp>using namespace cv; namespace Ui {class camaraGet;} class camaraGet : public QWidget{Q_OBJECT public:explicit camaraGet(QWidget *parent = 0);~camaraGet(); private slots:void openCamara();      // 打开摄像头void getFrame();       // 读取当前帧信息void closeCamara();     // 关闭摄像头。void takingPictures();  // 拍照 private:Ui::camaraGet ui;QTimer    *timer;QImage    *imag;CvCapture *cam;// 视频获取结构, 用来作为视频获取函数的一个参数IplImage  *frame;VideoCapture capture1;Mat showimage;QImage Mat2Qimage(Mat cvImg); //camaraGet(QWidget * parent);//申请IplImage类型指针,就是申请内存空间来存放每一帧图像}; #endif // CAMARAGET_H

源文件

#pragma once #include <QtWidgets/QWidget>#include "ui_camaraGet.h" #ifndef CAMARAGET_H#define CAMARAGET_H #include <opencv2\core\core.hpp>#include <QWidget>#include <QImage>#include <QTimer>     // 设置采集数据的间隔时间#include "camaraGet.h"#include<stdlib.h>#include<random>using namespace cv;using namespace std;     camaraGet::camaraGet(QWidget *parent):QWidget(parent){    ui.setupUi(this);connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(openCamara()));connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(takingPictures()));connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(closeCamara()));setWindowTitle(tr("Main Window")); timer = new QTimer(this);imag = new QImage();connect(timer, SIGNAL(timeout()), this, SLOT(getFrame()));//超时就读取当前摄像头信息}camaraGet::~camaraGet(){ } void camaraGet::openCamara(){capture1.open(1);                                            //打开摄像头,从摄像头中获取视频timer->start(10);} void camaraGet::getFrame() {capture1 >> showimage;QImage imag = Mat2Qimage(showimage); ui.label_2->setScaledContents(true);ui.label_2->setPixmap(QPixmap::fromImage(imag));} void camaraGet::closeCamara(){timer->stop();ui.label->clear();capture1.release();} string strRand(int length) {// length: 产生字符串的长度char tmp;// tmp: 暂存一个随机数string buffer;// buffer: 保存返回值 random_device rd;// 产生一个 std::random_device 对象 rddefault_random_engine random(rd());// 用 rd 初始化一个随机数发生器 random for (int i = 0; i < length; i++) {tmp = random() % 36;if (tmp < 10) {tmp += '0';}else {tmp -= 10;tmp += 'A';}buffer += tmp;}return buffer;}  void camaraGet::takingPictures(){capture1.open(1);capture1 >> showimage;QImage img = Mat2Qimage(showimage);ui.label->setScaledContents(true);ui.label->setPixmap(QPixmap::fromImage(img)); string writePath = "../tempPhoto/";string name;int i = 0;name = writePath + strRand(4) + ".jpg";imwrite(name, showimage);i++; }  QImage camaraGet::Mat2Qimage(Mat cvImg){// 8-bits unsigned, NO. OF CHANNELS = 1if (cvImg.type() == CV_8UC1){QImage image(cvImg.cols, cvImg.rows, QImage::FORMat_Indexed8);// Set the color table (used to translate colour indexes to qRgb values)image.setColorCount(256);for (int i = 0; i < 256; i++){image.setColor(i, qRgb(i, i, i));}// Copy input Matuchar *pSrc = cvImg.data;for (int row = 0; row < cvImg.rows; row++){uchar *pDest = image.scanLine(row);memcpy(pDest, pSrc, cvImg.cols);pSrc += cvImg.step;}return image;}// 8-bits unsigned, NO. OF CHANNELS = 3else if (cvImg.type() == CV_8UC3){// Copy input Matconst uchar *pSrc = (const uchar*)cvImg.data;// Create QImage with same dimensions as input MatQImage image(pSrc, cvImg.cols, cvImg.rows, cvImg.step, QImage::Format_RGB888);return image.rgbSwapped();}else if (cvImg.type() == CV_8UC4){//qDebug() << "CV_8UC4";// Copy input Matconst uchar *pSrc = (const uchar*)cvImg.data;// Create QImage with same dimensions as input MatQImage image(pSrc, cvImg.cols, cvImg.rows, cvImg.step, QImage::Format_ARGB32);return image.copy();}else{//qDebug() << "ERROR: Mat could not be converted to QImage.";return QImage();}}  #include <QGraphicsScene>  #include <QGraphicsView>   #include <highgui/highgui_c.h>  //包含opencv库头文件 #include <opencv2\imgproc\imgproc.hpp>#include <opencv2\core\core.hpp>#include <opencv2\highgui\highgui.hpp>  //opencv申明 #include <opencv/cv.hpp>using namespace cv; namespace Ui {class camaraGet;} class camaraGet : public QWidget{Q_OBJECT public:explicit camaraGet(QWidget *parent = 0);~camaraGet(); private slots:void openCamara();      // 打开摄像头void getFrame();       // 读取当前帧信息void closeCamara();     // 关闭摄像头。void takingPictures();  // 拍照 private:Ui::camaraGet ui;QTimer    *timer;QImage    *imag;CvCapture *cam;// 视频获取结构, 用来作为视频获取函数的一个参数IplImage  *frame;VideoCapture capture1;Mat showimage;QImage Mat2Qimage(Mat cvImg); //camaraGet(QWidget * parent);//申请IplImage类型指针,就是申请内存空间来存放每一帧图像}; #endif // CAMARAGET_H

运行效果

VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储

感谢你能够认真阅读完这篇文章,希望小编分享的“VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储

本文链接: https://www.lsjlt.com/news/278561.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VS2017+Qt5+Opencv3.4调用摄像头拍照并存储
    1. Qt的ui界面,找着画就好 2.头文件直接贴出,之后有时间慢慢解释吧 #pragma once #include <QtWidgets/QWidge...
    99+
    2024-04-02
  • VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储
    这篇文章主要介绍了VS2017+Qt5+Opencv3.4如何调用摄像头拍照并存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Qt的ui界面,找着画就好头文件直...
    99+
    2023-06-15
  • Android实现调用摄像头拍照并存储照片
    目录1、前期准备2、主要方法1、需要使用Intent调用摄像头2、需要检查SD卡(外部存储)状态3、获取图片及其压缩图片3、案例展示1、Layout2、MainActivity1、前...
    99+
    2024-04-02
  • Androidstudio调用摄像头拍照并保存照片
    本文实例为大家分享了Androidstudio调用摄像头拍照并保存照片的具体代码,供大家参考,具体内容如下 首先在manifest.xmlns文件中声明权限 <xml vers...
    99+
    2024-04-02
  • Python如何实现调用摄像头拍摄照片
    本文小编为大家详细介绍“Python如何实现调用摄像头拍摄照片”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python如何实现调用摄像头拍摄照片”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。步骤用opencv...
    99+
    2023-07-02
  • Python实现调用摄像头拍摄照片
    目录步骤代码实现效果步骤 用opencv打开摄像头并拍照保存照片到本地获取邮箱(如qq邮箱)的授权码,方法可自行百度将照片以附件的形式发送到指定邮箱删除本地照片 代码 import ...
    99+
    2024-04-02
  • Android中怎么调用摄像头拍照
    本篇文章给大家分享的是有关Android中怎么调用摄像头拍照,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步,获取权限if (ContextCompat.chec...
    99+
    2023-06-04
  • python调用摄像头实现拍照功能
    目录 1.介绍 2.系统依赖 (1)OpenCV-Python库 (2)Tkinter库 (3)Pillow库 (4)Time库 3.系统代码 4.效果展示 5.注意事项 1.介绍         这是一个有趣的项目,通过Python程...
    99+
    2023-09-21
    python 开发语言
  • Vue调用PC摄像头实现拍照功能
    本文实例为大家分享了Vue调用PC摄像头实现拍照功能的具体代码,供大家参考,具体内容如下 项目需求:可以本地上传头像,也可以选择拍摄头像上传。 组件: 1、Camera组件:实现 打...
    99+
    2024-04-02
  • python怎么实现调用摄像头并拍照发邮箱
    这篇文章主要介绍了python怎么实现调用摄像头并拍照发邮箱,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的五大特点是什么python的五大特点:1.简单易学,开...
    99+
    2023-06-14
  • Java+OpenCV调用摄像头实现拍照功能
    目录环境准备制作主界面整体结构介绍核心代码与知识点讲解JPanel中如何显示摄像头的图像OpenCV调用摄像头使用摄像头拍照完整代码OpenCVUtil.javaImageUtils...
    99+
    2024-04-02
  • vue调用摄像头进行拍照并能保存到本地的方法
    目录1. 使用Vue.js2. 创建目录3.实现:4.效果1. 使用Vue.js 把网页内容Ctrl+s保存到本地然后添加到项目中 https://cdn.jsdelivr.net/...
    99+
    2024-04-02
  • Electron调用外接摄像头并拍照上传实现详解
    目录背景需求分析实现视频采集MediaDevices.getUserMedia()拍照生成图片上传图片至CDN1. 使用HTMLCanvasElement.toBlob()语法参数2...
    99+
    2023-02-24
    Electron调用摄像头拍照上传 Electron调用外接摄像头
  • Electron怎么实现调用外接摄像头并拍照上传
    这篇文章主要介绍了Electron怎么实现调用外接摄像头并拍照上传的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Electron怎么实现调用外接摄像头并拍照上传文章都会有所收获,下面我们一起来看看吧。背景基于E...
    99+
    2023-07-05
  • Android如何实现控制摄像头拍照
    这篇文章主要介绍Android如何实现控制摄像头拍照,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用Camera控制手机拍照的步骤如下: 1) 调用Camera的open()方法打开相机。该方法默认打开后...
    99+
    2023-06-29
  • Vue实现调用PC端摄像头实时拍照
    Vue之调用PC端摄像头实时拍照,供大家参考,具体内容如下 由于我使用的是点击按钮打开模态框拍照所以在这里吧按钮和模态框代码都粘贴如下。 <!-- 打开模态框按钮--&g...
    99+
    2024-04-02
  • Android调用手机摄像头拍照和录音功能
    本文实例为大家分享了Android调用手机摄像头拍照和录音功能的具体代码,供大家参考,具体内容如下 调用摄像头拍照: public class MainActivity extend...
    99+
    2024-04-02
  • 怎么用Java+OpenCV调用摄像头实现拍照功能
    这篇文章主要介绍了怎么用Java+OpenCV调用摄像头实现拍照功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Java+OpenCV调用摄像头实现拍照功能文章都会有所收获,下面我们一起来看看吧。环境准...
    99+
    2023-06-29
  • 微信小程序调用摄像头实现拍照功能
    本文实例为大家分享了微信小程序调用摄像头实现拍照的具体代码,供大家参考,具体内容如下 微信小程序开发文档 首先,需要用户授权摄像头权限,这一步是必须的 具体步骤: 1、获取用户当前授...
    99+
    2024-04-02
  • Android怎么调用手机摄像头拍照和录音功能
    本文小编为大家详细介绍“Android怎么调用手机摄像头拍照和录音功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么调用手机摄像头拍照和录音功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。调...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作