前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020-10-22OpenCV 获取摄像头并显示摄像头视频

2020-10-22OpenCV 获取摄像头并显示摄像头视频

作者头像
爱笑的架构师
发布2020-10-28 14:50:49
9760
发布2020-10-28 14:50:49
举报
文章被收录于专栏:爱笑的架构师爱笑的架构师

OpenCV 获取摄像头,新建窗口显示摄像头视频

结合Leaning OpenCV 第二个例子 显示一个视屏文件 写了一下 获取摄像头的代码为并且创建窗口显示的代码为:

  1. #include "stdafx.h"
  2. #include <cv.h>
  3. #include <cxcore.h>
  4. #include <highgui.h>
  5. int main( int argc, char** argv )
  6. {
  7. //声明IplImage指针
  8. IplImage* pFrame = NULL;
  9. //获取摄像头
  10. CvCapture* pCapture = cvCreateCameraCapture(-1);
  11. //创建窗口
  12. cvNamedWindow("video", 1);
  13. //显示视屏
  14. while(1)
  15. {
  16. pFrame=cvQueryFrame( pCapture );
  17. if(!pFrame)break;
  18. cvShowImage("video",pFrame);
  19. char c=cvWaitKey(33);
  20. if(c==27)break;
  21. }
  22. cvReleaseCapture(&pCapture);
  23. cvDestroyWindow("video");
  24. }

其中必须说一下几个函数用分割线框起来了

具体是这样的:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

cvCreateCameraCapture

初始化从摄像头中获取视频

代码语言:javascript
复制
CvCapture* cvCreateCameraCapture( int index );

index 要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。

函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。

释放这个结构,使用函数cvReleaseCapture。

返回值为一个

代码语言:javascript
复制
CvCapture
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

CvCapture

视频获取结构

代码语言:javascript
复制
typedef struct CvCapture CvCapture;

结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

这个是一个很重要的结构 以后无论是读取已有视频还是从摄像头获取都必须用到它

然后的工作就是把视屏显示出来

代码语言:javascript
复制
  1. while(1)
  2. {
  3. pFrame=cvQueryFrame( pCapture );
  4. if(!pFrame)break;
  5. cvShowImage("video",pFrame);
  6. char c=cvWaitKey(33);
  7. if(c==27)break;
  8. }

在这里解释一下为什么显示视屏的时候要循环

进入While循环之后 开始读入视屏文件

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

cvQueryFrame函数

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

代码语言:javascript
复制
IplImage* cvQueryFrame( CvCapture* capture );

capture 视频获取结构。

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

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果抓取帧为空 break 打破循环

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

cvShowImage("video",pFrame);

当前帧显示后

char c=cvWaitKey(33); if(c==27)break;

我们等待33ms

如果用户触发了按键,将按键的ASCII值给C

如果C为ESC(ASCII 为27)循环退出

最后释放capture 和window

cvReleaseCapture(&pCapture); cvDestroyWindow("video");

最后释放占用资源

显示运行结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenCV 获取摄像头,新建窗口显示摄像头视频
  • cvCreateCameraCapture
  • CvCapture
  • cvQueryFrame函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档