1. opencv自带函数glob()遍历
OpenCV自带一个函数glob()可以遍历文件,如果用这个函数的话,遍历文件也是非常简单的。这个函数非常强大,人脸识别的时候用这个函数应该会比用at.txt更加方便。
主要函数
void cv::glob(String pattern,std::vector
分析
String pattern:绝对路径下的照片
pattern = "/home/Data/data/*.jpg": 选择*.jpg这一类的图片
std::vector< cv::String > & result:这里必须为CV的String,即路径被存在string类型的vector中
bool recursive:可省去,当recursive为false时,仅仅遍历指定文件夹内符合模式的文件;当recursive为true时,会同时遍历指定文件夹的子文件夹
程序
face_tb.cpp
#include "pch.h"
#include "Ve.h"
//#include
//#include
//#include
//using namespace cv;
//using namespace std;
int main()
{
cv::String pattern="E:/tb/project/tb2/face_tb/face_tb/face_tb/face_tb/fileName/*.jpg";
Ve ve;
vector img=ve.ReadImage(pattern);
return 0;
}
vector Ve::ReadImage(cv::String pattern)
{
vector fn;
glob(pattern, fn, false);
vector images;
size_t count = fn.size(); //number of png files in images folder
printf("%d",count);
for (size_t i = 0; i < count; i++)
{
char grayFile[500];
sprintf_s(grayFile, 500,"E:/tb/project/tb2/face_tb/face_tb/face_tb/face_tb/grayFile/%d.jpg", i); //保存图片的路径
//images.emplace_back(cv::imread(fn[i]));
imshow("img", imread(fn[i]));
waitKey(100);
imwrite(grayFile, imread(fn[i]));
}
return images;
}
知识补充:
sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format,
[argument] ...);
注意这里的buffer指针 指向的是格式化字符后写入的首地址。
参考链接:https://www.cnblogs.com/ZY-Dream/p/9986093.html
buffer:char型指针,指向将要写入的字符串的缓冲区。
sizeOfBuffer:缓冲区大小。
format:格式化字符串。
[argument]...:可选参数,可以是任何类型的数据
CV_EXPORTS_W bool
imwrite(
const string& filename,
InputArray img,
const vector
);
filename :要写入的图像名称,或带文件路径的图像名称
img :mat数据类型
params :特定格式保存的特殊编码,通常可以不用
Ve.h
#pragma once
#include
using namespace cv;
using namespace std;
class Ve {
public:
vector ReadImage(cv::String pattern);
};
运行结果如下:
知识补充:
https://blog.csdn.net/u014768064/article/details/53068216
vector《Mat》在这里是函数返回值,vector是数组,vector《Mat》是指Mat类型的数组,c++ stl里的类模板。这里&是c++引用,引用传递参数少了对象的拷贝。
Mat值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。
Mat&引用传递:形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作
https://ask.csdn.net/questions/750785
参考:https://blog.csdn.net/ThorKing01/article/details/92836379
https://blog.csdn.net/qq_34116292/article/details/82355174
https://blog.csdn.net/xingchenbingbuyu/article/details/72628882
人工智能开发板: