opencv的相关类及示例分析(一)之在QT中利用opencv用摄像头采集图像



1、cvNamedWindow

  该函数为开放计算机视觉(OpenCV)库库函数,用来创建指定的窗口。   定义:   int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );   参数:   name 窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。   flags 窗口属性标志。可以选择CV_WINDOW_AUTOSIZE(1)和0两种值。CV_WINDOW_AUTOSIZE这个标志被设置后1,表示以固定的窗口尺寸显示图像,用户不能手动改变窗口大小。如果设置为0,则窗口的大小可以手动改变,会自动调整以适合被显示图像(参考cvShowImage)。   函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。如果已经存在这个名字的窗口,这个函数将不做任何事情。   示例:   cvNamedWindow("video", 1);//创建了一个名为video的窗口。[1]

  也可以cvNamedWindow("video"); //创建了一个名为video的窗口。

 

 

2、opencv里面的CvCapture什么作用

 

一个获取视频的抽象接口结构。
你可以理解为它能连到摄像头,然后你想让摄像头做什么,都要用函数调用,它作为参数起到控制摄像头的作用

 

3、CvCapture* cvCreateCameraCapture( int index );

 

对于 cvCreateCameraCapture ,其是通过初始化一个视频设备 (也可以看做就是一个摄像头),

初始化以后,便可以从这个摄像设备中获取视频了。

至于参数 index 的话,如果您的电脑上连接了多个摄像设备,则需要通过这个  index  来指定到底要使用哪一个摄像头。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。

 

4、cvQueryFrame函数

 

从摄像头或者文件中抓取并返回一帧

IplImage* cvQueryFrame( CvCapture* capture );
 
capture 
视频获取结构。

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

 

 

#include “highgui.h”//包含opencv库头文件

#include "cv.h"

 

int main( int argc, char** argv ) {//主函数

 

  cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );//创建窗口,(名字,默认大小)

 CvCapture *capture   = NULL;// 视频获取结构,用来作为视频获取函数的一个参数

 

   capture = cvCreateCameraCapture(0);//打开摄像头,从摄像头中获取视频

   IplImage* frame;//申请IplImage类型指针,就是申请内存空间来存放每一帧图像

    while(1) {

        frame = cvQueryFrame( capture );// 从摄像头中抓取并返回每一帧

        if( !frame ) break;//如果抓取帧为空   break 打破循环

否则将抓取的那一帧显示在创建的窗口上

        cvShowImage( "Example2", frame );//在窗口上显示每一帧

        char c = cvWaitKey(33);//延时,每秒钟约33帧;符合人眼观看速度;

        if( c == 27 ) break;//由于是死循环,而且没有控制台,当按下键盘esc键,将按键的ASCII值给C,如果C为ESC(ASCII 为27)循环退出退出循环;

            }

    cvReleaseCapture( &capture );//释放内存;

    cvDestroyWindow( "Example2" );//销毁窗口

}

 

运行结果如下:

opencv的相关类及示例分析(一)之在QT中利用opencv用摄像头采集图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值