虽然之前看过opencv相关的书,但是之前自己都是大概潦潦草草看了一通,现在又重新从头开始细致梳理一遍,让大家见笑了。
我的思路是按照程序来的,知道头文件都有哪些之后,下面可能要遇到命名空间,这一部分就不详细说了,大家可以去看C++prime
main函数有好多种方式,刚开始学习一般都是int main(){},参数为空,这样学习会比较轻松。
我们见到的Main函数中经常带有argc\argv,就是长下面这个样子:
int main(int argc,char** argv)
或
int main(int argc,char* argv[])
argc表示命令行输入参数的个数(以空白符分隔),argv中存储了所有的命令行参数。
这两个参数的作用,argc是指命令行输入参数的个数(以空白符分隔);argv存储了所有的命令行参数,argv[0]指向程序运行的全路径名, argv[1]指向在DOS命令行中执行程序名后的第一个字符串, argv[2]指向执行程序名后的第二个字符串, argv[3]指向执行程序名后的第三个字符串,argv[argc]为NULL。
如果我们使用以上这两种方式,对于argv[1],处理方式是【项目属性】-【配置属性】-【调试】-【命令参数】中的值。如果有多个字符串,则用空格隔开,例如“1.jpg” “2.jpg”或是直接进行替换或注释。替换的形式一般是这样的:
Mat src=imread(“1.jpg”,1);//可以将图片放在项目编译文件下或是写出完整路径。
怎样获取图片的完整路径?图片右键-属性-安全-对象名称,这个复制就绝对是完整路径了。但是这个放在程序里,路径里要用双右斜线\\,自己只亲测了这一种。大家可以试一试双左斜线、单左斜线。
这样其实比较麻烦,还可以直接就把图片放在工程文件夹下和.cpp文件放一起,直接使用图片名称完成读取。
对于opencv里的imread()函数支持的图像类型有:
--位图 bmp
--JPEG,jpg,jpe,jp2
--png
--tiff,tif
--pbm,pgm,ppm