标签:style blog color os ar for 文件 2014 sp
在OpenCV上看到一段处理视频的代码,但是复制到VS下运行运行框总是闪退,查了一下原来应该直接在命令下运行exe文件,主要涉及main函数中argc和argv参数的意义,在这里说一下
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
* argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
argc 是指命令行输入参数的个数,argv 则存储了所有的命令行参数。假如我的一个程序是video_test.exe,如果在命令行运行该程序(首先应该在命令行下用 cd 命令进入到 video_test.exe 文件所在目录),要处理的文件有 v1.avi、v2.mpg,运行命令为:
video_test.exe v1.avi v2.mpg
那么,argc的值是 3,argv[0]是"video_test.exe",argv[1]是"v1.avi",argv[2]是"v2.mpg"。
也就是说,如果直接在VS下编译运行的话,argc为1 只执行了exe
int main( int argc, char** argv ) { //声明IplImage指针 IplImage* pFrame = NULL; IplImage* pFrImg = NULL; IplImage* pBkImg = NULL; CvMat* pFrameMat = NULL; CvMat* pFrMat = NULL; CvMat* pBkMat = NULL; CvCapture* pCapture = NULL; int nFrmNum = 0; //创建窗口 cvNamedWindow("video", 1); cvNamedWindow("background",1); cvNamedWindow("foreground",1); //使窗口有序排列 cvMoveWindow("video", 30, 0); cvMoveWindow("background", 360, 0); cvMoveWindow("foreground", 690, 0); if( argc > 2 ) { fprintf(stderr, "Usage: bkgrd [video_file_name]\n"); return -1; } //打开摄像头 if (argc ==1) if( !(pCapture = cvCaptureFromCAM(-1))) { fprintf(stderr, "Can not open camera.\n"); return -2; } //打开视频文件 if(argc == 2) if( !(pCapture = cvCaptureFromFile(argv[1]))) { fprintf(stderr, "Can not open video file %s\n", argv[1]); return -2; }
主函数main中变量(int argc,char *argv[ ])的含义
标签:style blog color os ar for 文件 2014 sp
原文地址:http://blog.csdn.net/chaoshenyutou/article/details/39351501