OpenCV摄像头视频的获取
来源:互联网 发布:淘宝卖家怎么贷款 编辑:程序博客网 时间:2024/05/23 01:14
#include <opencv/cv.h>#include <opencv/highgui.h>#include <opencv/cxcore.h>#include <stdlib.h>#include <stdio.h>#include <math.h>//#pragma comment( lib, "cxcore.lib" )//#pragma comment( lib, "highgui.lib" )void main(int argc, char *argv[]){ CvCapture* capture = 0;//视频流捕获 if(argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0]))) capture = cvCaptureFromCAM(argc == 2 ? argv[1][0] - '0' : 0);//从摄像头获得视频流 else if( argc == 2 ) capture = cvCaptureFromAVI(argv[1]);//从文件获得视频流 if(!capture) return; IplImage *current_frame_rgb = cvCreateImage(cvSize(320, 240), IPL_DEPTH_16U, 3); cvNamedWindow("Window 0", 0); while(capture) { current_frame_rgb = cvQueryFrame(capture);//获得一帧图象 cvShowImage("Window 0",current_frame_rgb); if(cvWaitKey(1)==27)//等待ESC键 break; } cvDestroyAllWindows(); }
OpenCV 获取摄像头,新建窗口显示摄像头视频
结合Leaning OpenCV 第二个例子 显示一个视屏文件 写了一下 获取摄像头的代码为并且创建窗口显示的代码为:
#include "stdafx.h"#include <cv.h>#include <cxcore.h>#include <highgui.h> int main( int argc, char** argv ){ //声明IplImage指针 IplImage* pFrame = NULL; //获取摄像头 CvCapture* pCapture = cvCreateCameraCapture(-1); //创建窗口 cvNamedWindow("video", 1); //显示视屏 while(1) { pFrame=cvQueryFrame( pCapture ); if(!pFrame)break; cvShowImage("video",pFrame); char c=cvWaitKey(33); if(c==27)break; } cvReleaseCapture(&pCapture); cvDestroyWindow("video");}
其中必须说一下几个函数用分割线框起来了
具体是这样的:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cvCreateCameraCapture
初始化从摄像头中获取视频
CvCapture* cvCreateCameraCapture( int index );
- index 要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。
函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。
释放这个结构,使用函数cvReleaseCapture。
返回值为一个
CvCapture++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CvCapture
视频获取结构
typedef struct CvCapture CvCapture;
结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这个是一个很重要的结构 以后无论是读取已有视频还是从摄像头获取都必须用到它
然后的工作就是把视屏显示出来
其中必须说一下几个函数用分割线框起来了
具体是这样的:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cvCreateCameraCapture
初始化从摄像头中获取视频
CvCapture* cvCreateCameraCapture( int index );
- index 要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。
函数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。
释放这个结构,使用函数cvReleaseCapture。
返回值为一个
CvCapture++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CvCapture
视频获取结构
typedef struct CvCapture CvCapture;
结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这个是一个很重要的结构 以后无论是读取已有视频还是从摄像头获取都必须用到它
然后的工作就是把视屏显示出来
while(1){ pFrame=cvQueryFrame( pCapture ); if(!pFrame)break; cvShowImage("video",pFrame); char c=cvWaitKey(33); if(c==27)break;}
在这里解释一下为什么显示视屏的时候要循环
进入While循环之后 开始读入视屏文件
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
cvQueryFrame函数
从摄像头或者文件中抓取并返回一帧
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");
最后释放占用资源
- OpenCV摄像头视频的获取
- OpenCV摄像头视频的获取
- OpenCV摄像头视频的获取
- [opencv]3.获取摄像头的视频流
- opencv 3 获取摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- OpenCV 获取摄像头并显示摄像头视频
- 基于opencv网络摄像头在ubuntu下的视频获取
- opencv获取摄像头视频并显示
- opencv+树莓派+自带摄像头 获取视频
- opencv+树莓派+自带摄像头 获取视频
- opencv使用笔记本摄像头获取视频问题解决
- OpenCV 获取笔记本摄像头,新建窗口显示摄像头视频
- OpenCV 获取摄像头,新建窗口显示摄像头视频
- mysql旧版本密码长度问题
- Getting Started With Burp Suite
- HDU 2030 汉字统计
- linux下firefox安装Adobe Flash Player插件
- ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端
- OpenCV摄像头视频的获取
- POJ 2421 最小生成树
- svn security bugs
- Unable to get view server version from device emulator-5554 解决办法
- 浅谈SQL之语言基础
- 教你熟知QoS的设置方法【lpxt】
- 跨目录makefile
- Android File 文件存储
- mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......) .