【opencv学习之四】opencv调取本地摄像头

从博客上看到opencv如何调取摄像头,例程代码跑了一下,效果可以,下面是代码,Qt配置opencv和之前介绍的一样,pro中添加opencv路径,include时候包含头文件名字就OK。

我是加在mainWindow下调用的,只要调用就可以,下面是代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "cv.h"
#include "highgui.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{   
    //下面的代码在mian函数里或用其他函数调用即可,我加了按钮调用;
    
    IplImage* pFrame = NULL;
    //声明IplImage指针

    CvCapture* pCapture = cvCreateCameraCapture(-1);
    //获取摄像头
    //-1为默认摄像头,其他则需要填写地址;
    //函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。
    //目前在Windows下可使用两种接口:Video for Windows(VFW)
    //和Matrox Imaging Library(MIL);
    //Linux下也有两种接口:V4L和FireWire(IEEE1394)。
    //释放这个结构,使用函数cvReleaseCapture。
    //返回值为一个
    // CvCapture


    cvNamedWindow("video", 1);
    //创建窗口


    while(1)//显示视屏
    {
        pFrame=cvQueryFrame( pCapture );
        // 函数cvQueryFrame从摄像头或者文件中抓取一帧,
        //然后解压并返回这一帧。
        //这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。
        //返回的图像不可以被用户释放或者修改。抓取后,capture被指向下一帧,
        //可用cvSetCaptureProperty调整capture到合适的帧。

        if(!pFrame)break;
        //如果PFrame为空,则跳出循环;

        cvShowImage("video",pFrame);
        //当前帧显示后

        char c=cvWaitKey(33);
        //我等待33ms

        if(c==27)break;
        //如果用户触发了按键,将按键的ASCII值给C
        //如果C为ESC(ASCII 为27)循环退出
    }
    cvReleaseCapture(&pCapture);
    //释放Capture;

    cvDestroyWindow("video");
    //销毁窗口
}

 

效果如下:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值