opencv学习笔记(七)从电脑摄像头读入数据

本文详细介绍了如何使用OpenCV的cvCaptureFromCAM()函数从电脑摄像头读取视频数据,包括摄像头索引的使用以及命令行参数argv[1]的意义。通过示例程序解析cvCreateFileCapture(argv[1])的运用,强调了参数的重要性。
摘要由CSDN通过智能技术生成
#include"highgui.h"
#include"cv.h"
//从摄像头中读入数据
int main(int argc,char** argv)
{
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
CvCapture* capture; //初始化一个CvCapture结构的指针
if(argc==1)
{
capture=cvCaptureFromCAM(0);//如果参数为1,则从摄像头中读入数据,并返回一个CvCapture的指针 
}                               
//注:《学习OpenCV》中此处用cvCreateCameraCapture为错
else
{
capture=cvCreateFileCapture(argv[1]);
}
 assert(capture!=NULL);  
//断言(assert)使用,检查capture是否为空指针,为假时程序退出,并打印错误消息 
IplImage* frame;
while(1)
 {
frame=cvQueryFrame(capture);
//用于将下一帧视频文件载入内存(实际是填充和更新CvCapture结构中),返回一个对应当前帧的指针
if(!frame)
break;
cvShowImage("Example1",frame);
char c=cvWaitKey(33);
if(c==27) 
break; //触发ESC键退出循环,读入数据停止
 }
 cvReleaseCapture(&capture);//释放内存
 cvDestroyWindow("Example1");

}

从这个程序就可以看出,和读入视频的程序几乎一样,相当类似。

7.1 cvCaptureFromCAM()

OpenCV中一个函数。初始化从摄像头中获取视频

CvCapture *cvCaptureFromCAM( int index );

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

一般index=0

我试了下,随便写个数都可以——可能是因为只有一个摄像头的缘故。

7.2 argv[1]——1.1有说明

首先说明一下:什么是命令行

Dos系统下,输入要运行的程序名,再输入参数:

program pram1 pram2...

argc 为 参数个数+1

argv[0] "program "

argv[1] "pram1 " ——argv[1]就是第一个参数

argv[2] "pram2 "

命令行

就是原来称之为DOS”的操作方式。那时的程序运行不像现在只需点点鼠标,而是需要在提示符下键入命令的,这种操作方式就叫做命令行。

Windows95以后,DOS就退居二线了,在Win9x下点“开始-程序-MSDOS方式”、Win2000/XP/2003下在“开始-运行”窗口中输入“CMD”命令,就可以进入DOS窗口,运行行命令方式。

其实,在“开始-运行”中键入命令的方式,本身就是一种行命令方式。

总结一下:argv[1]就是程序运行时传入的第一个参数。

7.3  capture=cvCreateFileCapture(argv[1])

这里为什么是(argv[1])呢?

以前读入视频的时候,是写视频文件名。现在为什么写argv[1]呢?

我试了下,写成argv[i]都可以,但是不可以写成 capture=cvCreateFileCapture(),里面必须有一个为参数,否则提示出错。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值