一、OpenCV框架
链接一个博文:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析。
二、main函数中的argc和argv
argc和argv这两个参数一般在 用命令行编译程序 时使用。
UNIX和LINUX标准主函数main的参数变量:(int argc, char *argv[], char **env),有些编译器允许将main()的返回类型声明为void,已经不再是合法的C++了。其中,
第一个参数,int类型的argc,用来统计程序运行时发送给main函数的命令行参数的个数;第二个参数,char *类型的argv[];为字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。各含义如下:
argv[0]指向程序运行的全路径名
argv[1]指向在DOS命令行中执行程序名后的第一个字符串
argv[2]指向在DOS命令行中执行程序名后的第二个字符串
argv[3]指向在DOS命令行中执行程序名后的第三个字符串
argv[argc]为NULL
Vsiual Studio中:argv[1]对应的是【项目属性】->【配置属性】->【调试】->【命令参数】中的字符串,字符串用引号,如果有多个字符串则用空格隔开即可,如:"1.jpg" "2.jpg"
第三个参数,char**类型的env,为字符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量,value为ENVVAR的对应值。该参数在OpenCV里很少使用。
三、Mat
Mat本质上是由两个数据部分组成的类: (包含信息有矩阵的大小,用于存储的方法,矩阵存储的地址等) 的矩阵头和一个指针,指向包含了像素值的矩阵(可根据选择用于存储的方法采用任何维度存储数据)。矩阵头部的大小是恒定的。然而,矩阵本身的大小因图像的不同而不同,通常是较大的数量级。因此,当你在您的程序中传递图像并在有些时候创建图像副本您需要花费很大的代价生成图像矩阵本身,而不是图像的头部。