opencv批量读取图片的三种常见方法

在参考部分博客后汇总了3种批量读入图片的方法

 

方法一:

利用图片本身的数字名:

stringstream stream;

string str;

stringstr1 = "D:\\update\\图像\\";

stream << setw(2) << setfill('0') << k; //技巧一

stream >> str;

cout << str<< endl;

char  a1[20];

sprintf_s(a1, _countof(a1), "%02d", k);//技巧二

string filename = str1 + a1 + ".jpg";    //或者string filename = str1 +str + ".jpg";都可以

cout<< "正在拼接......." << filename << endl;

 

方法


利用图片本身的数字名生成的txt文件:

#include 

#include 

#include 

#include 

 

using namespace std; 

using namespace cv; 

 

void main() 

{ 

    ifstream file("C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/faces/face.txt"); 

 

    int img_index = 0; 

 

    while (!file.eof()) 

    { 

        char txt_cont[200]; 

        file.getline(txt_cont,200); 

 

        char img_file[200],save_file[200]; 

 

        sprintf(img_file, "C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/faces/%s", txt_cont); 

        sprintf(save_file, "C:/Users/Administrator/Desktop/date/MIT/MIT人脸库/save/%d.jpg", img_index); 

 

        Mat src = imread(img_file); 

 

        img_index++; 

         

        imwrite(save_file,src); 

    } 

     

}

方法

利用Directory类实现文件夹中特定格式图像的遍历,Directory的头文件是windows.h。

 

#include 

#include 

#include 

#include 

#include  

 

using namespace std; 

using namespace cv; 

 

 

void main() 

{ 

    Directory dir; 

 

    string path1 = "C:\\Users\\Administrator\\Desktop\\date\\MIT\\MIT人脸库\\faces"

    string  exten1 = "*.bmp"

 

    vector filenames = dir.GetListFiles(path1, exten1, false); 

 

    int size = filenames.size(); 

 

    for (int i = 0; i < size;i++) 

    { 

        cout << filenames[i] << endl; 

    } 

} 

 

 

 

 

 

 

你可能感兴趣的:(opencv)