OPENCV_main_argc&agrv 用法

来源:互联网 发布:北京交通大学知行论坛 编辑:程序博客网 时间:2024/06/05 06:10


// test 通过argc,argv进行图片读取
/*agrc (Argument count) 命令行参数个数 argv (argument value)命令行参数指针或者文件地址

这两个参数在opencv 到底是干什么用的呢 :argc 读取的那一个图片 比如第一个图像,第二个图像 就是argc=1 ,argc=2
注意第0个就是程序的执行文件 (.exe) 
执行文件在C:\Users\User\Documents\Visual Studio 2008\Projects\test\Debug中的test.exe
agrv 是图像的路径 手工输入地址一次 这样就可以每次不用写入输入图像路径 比如要读取
argc=1的图像 就要在[项目] -> 属性页 -> 配置属性 -> 调试->命令参数 添加图片路径
C:\\Users\\User\\Pictures\\opencvfile\\公路1.jpg复制过去,如果读取其他图片要加空格然后 C:\\Users\\User\\Pictures\\opencvfile\\公路2.jpg
*/

#include "stdafx.h" //预编译头文件
#include <stdio.h>//标准输入输出如果需要用scanf 必须包含 ,此文没有用scanf 故此可以不写
#include "cv.h"
#include "highgui.h"
//#include <stdlib.h> //如果闪退加入

int main(int argc, char* argv[]) //agrc 命令行参数,char **argv=char*argv[]格式一样输哪个都可以
{
 //显示argc ,argv
 int i;
 for (i=0; i < argc; i++)//当i小于argc 即参数个数时打印 afgc ,agrv
  printf("Argument %d is %s.\n", i, argv[i]); //注意此处for循环只针对这个语句 因为argv是char型所有需要用%s

 //判断argc参数是否正确
 if (argc != 3) //参数个数必须为3如果不是 参数输入错误  return-1 :一般正常关闭时用return 0 异常关闭用 0
 {
  printf("argc error \n");
  return -1;  //谁调用就返回给谁
 }

 IplImage *img1 = cvLoadImage(argv[1]);//读取图像argv【1】第一个图片的地址 如下,将其复制到  [项目] -> 属性 -> 配置属性 -> 调试->命令参数
 //IplImage *img1 = cvLoadImage(" C:\\Users\\User\\Pictures\\opencvfile\\公路1.jpg");//我习惯用这个进行读取可读性好啊
 IplImage *img = cvLoadImage(argv[2]);//与argv[1]相同一样复制到那里 用空格分开

 //显示图像
 cvNamedWindow("img"); //建立窗口
 cvShowImage("img", img);//显示图像
 cvNamedWindow("img1");
 cvShowImage("img1", img1);

 cvWaitKey(0);//cvWaitKey()>=0时一直显示 》=0时显示图片的时间以毫秒为准

 cvReleaseImage(&img);//释放图像资源
 cvReleaseImage(&img1);
 cvDestroyAllWindows();//释放所有窗口资源

 //system("pause");//如果闪退加入
 return 0;
}

[项目] -> 属性页 -> 配置属性 -> 调试->命令参数 添加图片路径

执行结果


0 0
原创粉丝点击