之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息。故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息。

打开QTcreator,新建一个widget工程。

在界面上放两个label 分别用来显示摄像头采集到的数据和照的照片。

在widget.h中的源代码如下:

#ifndef WIDGET_H

#define WIDGET_H
#include <QWidget>
#include <QImage>
#include <QTimer> //设置采集数据的间隔时间
#include <highgui.h>
#include <cv.h>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void openCamara(); //打开时摄像头
    void readFarme();  //读取当前帧信息
    void closeCamara();//关闭摄像头
    void takingPictures(); //拍照
private:
    Ui::Widget *ui;
   QTimer *timer;
    QImage *imag;
    CvCapture *cam;//视频获取结构,用来作为视频获取函数的一个参数
    IplImage *frame;//申请IplImage类型指针,就是申请内存空间来存放每一帧图像
};

#endif // WIDGET_H

在widget.cpp中的源文件如下:

#include "widget.h"

#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    cam=NULL;
    timer=new QTimer(this);
    imag=new QImage();
    connect(timer,SIGNAL(timeout()),this,SLOT(readFarme()));
    connect(ui->open,SIGNAL(clicked()),this,SLOT(openCamara()));
    connect(ui->pic,SIGNAL(clicked()),this,SLOT(takingPictures()));
    connect(ui->close,SIGNAL(clicked()),this,SLOT(closeCamara()));
}
Widget::~Widget()
{
    delete ui;
}
void Widget::openCamara()
{
    cam=cvCreateCameraCapture(0);
    timer->start(33);
}
void Widget::readFarme()
{
    frame=cvQueryFrame(cam);
  //  QImage imag((const uchar*)frame->imageData,frame->width,frame->height,QImage::Format_RGB888);
    QImage imag=QImage((const uchar*)frame->imageData,frame->width,frame->height,QImage::Format_RGB888).rgbSwapped();
    ui->label->setPixmap(QPixmap::fromImage(imag));
}
void Widget::closeCamara()
{
    timer->stop();
    cvReleaseCapture(&cam);//释放内存;
}

void Widget::takingPictures()
{
   frame = cvQueryFrame(cam);
   QImage imag((const uchar*)frame->imageData, frame->width, frame->height, QImage::Format_RGB888);
   ui->label_2->setPixmap(QPixmap::fromImage(imag));
}

好了,全部代码都OK了。

(大致思路是:点击打开摄像头按钮,则开启摄像头,并设置一个定时器,每隔一段时间捕获摄像头摄取到的帧,将其转换成QImage,最最后在QLabel控件上显示)

QT creator中使用opencv采集摄像头信息的更多相关文章

  1. Qt creator中配置opencv win7 64bit

    配置方法的原文来自https://www.librehat.com/qt-5-2-vs2012-opencv-2-4-7-dev-environment-setup-tutorial/. 补充,在张静 ...

  2. QT creator中使用opencv

    最近要用到opencv做图像方面的东西,网上很多是用VS加opencv,但自己对VS不怎么喜欢,想用QT Creator.在网上搜索了很多资料,终于花了一天的时间,在QT Creator上能使用ope ...

  3. 在Qt Creator中添加OpenCV库

    在项目的pro文件中添加如下代码:INCLUDEPATH += D:/opencv/build/include win32:CONFIG(debug, debug|release): {LIBS += ...

  4. Qt Creator中,include路径包含过程(或如何找到对应的头文件)

    Qt Creator中,include路径包含过程(或如何找到对应的头文件) 利用Qt Creator开发程序时,需要包含利用#include来添加头文件. 大家都知道,#include <&g ...

  5. Qt Creator中的3D绘图及动画教程(参照NeHe)

    Qt Creator中的3D绘图及动画教程(参照NeHe) http://blog.csdn.net/cly116/article/details/47184729 刚刚学习了Qt Creator,发 ...

  6. Windows XP 下如何使用Qt Creator中的Git版本控制功能

     原文地址:http://www.qtcn.org/bbs/simple/?t16960.html Qt Creator是针对Qt应用开发平台专门设计的IDE开发工具,集成了很多功能,分别有win ...

  7. qt creator中使用qwt插件

    前提:我用mingw编译的qwt. 将qwt插件集成到qt designer非常easy.仅仅要把qwt编译的qwt_designer_plugin.dll复制到C:\Qt\Qt5.3.1\5.3\m ...

  8. Qt在VS2013或Qt Creator 中的控制台输出方式设置

    首先值得注意的是:在写程序的时候,项目保存路径不要涉及到中文,否则容易出错! 一.Qt在VS2013中的控制台输出方式: 注意:这里是而不是Qt Application. 然后直接点击finish即可 ...

  9. qt creator中编辑Makefile的设置

    在qt creator中编辑Makefile时的Tab键总是不能识别,需要这样设置

随机推荐

  1. Boost 和 STL 相比有哪些优势和劣势?

    1. 在设计原则上,STL和Boost大体统一因为STL和Boost基本上都是标准委员会那批人在策划.审核和维护,所以口味上是相对接近的.但是因为Boost并不在标准中,或者说是下一代标准的试验场,所 ...

  2. MFC界面更新实现方法

    1.更新窗口 即采用UpdateWindow()函数立即发送WM_PAINT消息更新整个窗口. void CEditTestDlg::OnBnClickedBtnSysUpdate() { CStri ...

  3. Http请求工具实例编写

    HTTP协议工作方式首先客户端发送一个请求(request)给服务器,服务器在接收到这个请求后将生成一个响应(response)返回给客户端.在这个通信的过程中HTTP协议在以下4个方面做了规定:1. ...

  4. bzoj1827 [Sdoi2010]星际竞速

    Description 10 年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一, 夺得这个项目的冠军无疑是很多人的梦想,来自杰森座 α星的悠悠也是其中之一. 赛车大赛的赛场由 N 颗行星和 ...

  5. coreOS+Docker新一代企业轻量级Linux

    CoreOS官网主页使用一句话概括其理 念:“A new way to think about servers”,以及紧接着的“CoreOS is Linux for massive server d ...

  6. java中文乱码解决之道(六)—–javaWeb中的编码解码

    在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言, ...

  7. 简易封装一个带有占位文字的TextView

    在实际iOS应用开发中我们经常会用到类似于下图所示的界面,即带有占位文字的文本框:

  8. mysql中的unique

    distinct可以把重复的行去掉,查询时候用select distinct * from ...; unique在MySQL中是完整性约束里的一种,如果某列的值需要是唯一的那么就添加UNIQUE约束 ...

  9. 将16进制颜色转换成UIColor-ios

    -(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSString *cString = [[stringToConvert ...

  10. Qt的Graphics-View框架和OpenGL结合详解

    Qt的Graphics-View框架和OpenGL结合详解 演示程序下载地址:这里 程序源代码下载地址:这里 这是一篇纯技术文,介绍了这一个月来我抽时间研究的成果. Qt中有一个非常炫的例子:Boxe ...