最近在做有关图像的毕业设计,需要导入不同的图片进行处理,然后对处理过后的图片进行保存。之前一直是手动改路径特别麻烦,于是就找了一下相关的处理函数与特殊类,如下:
glob函数:
void cv::glob ( String pattern, std::vector< String > & result, bool recursive = false )
其中:
1、String pattern 是包含众多图片文件的文件夹路径,数据类型是cv::String,不要与std::string弄混;
2、 std::vector< String > & result 则是得到的图片文件集,保存在容器vector中;
第三个参数用不到,那么这个函数的作用就是得到文件夹pattern中的众多文件名,并全部保存到result中。
String类
这里还要用到opencv中的String类,这是一个与字符操作有关的类,处理字符时还挺方便的,那么这里用到的是该类的一个重载构造函数,如下:
String& operator=(const char* s);
通过该函数就可以实现从字符数组到String类对象的转化。
问题说明
之前比较头疼的是要把处理后的图片保存到新的文件当中,那么文件名肯定要与原来的有所区别,而上边的glob()函数得到的文件集是文件的全路径,如下图:
这样不好对文件名直接操作,所以要进行截取,仅把文件名截取出来,如下:
那么,在这个基础上编辑好要保存的文件名,如下:
这样就能实现处理后需要保存结果文件名了。具体实现还是看代码吧。
C++代码
//截取得到文件名
String Getfilename(String &Orgfolder