现在的位置: 首页 > 综合 > 正文

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

2018年05月27日 ⁄ 综合 ⁄ 共 1749字 ⁄ 字号 评论关闭


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用摄像头采集图像

抱歉!评论已关闭.