您的位置:首页 > 编程语言 > C语言/C++

C++ opencv 挑选文件夹下特定文件并存储

2011-11-17 04:34 239 查看
我这个程序主要用途如下: 我的文件夹下有很多图片, 他们的文件名是 "number.jpg", 数字并不是按照特定顺序。我现在从一个文件读取一个数字,这里是变量number, 然后把大于这个number的文件,挑选出来存储到我新建的文件夹下。程序如下:红色的是注释

//opencv header

#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

#include<fstream>

#include<stdlib.h>

#include<direct.h>

#include<string>

#include <iostream>

#include <io.h>

using namespace std;

    void main()

   {
//新建文件夹,名字是new

    char* newfile="D://coms661//project//new";

    mkdir(newfile);

    string filename;

    string s1,s2,s3;

    //打开所要文件得到number这个数字

    s1="D://coms661//project//Resource//video//training//video_26//Files";

    s2="//Einsert.txt";

    string number;

    ifstream inf(s1+s2);

    inf>>number;

    //打开所要挑选文件的文件夹

    string s4="D://coms661//project//Resource//video//training//video_26//";

    IplImage* img=NULL;

    string jpg=".jpg";
//hFile 是long类型  

    long hFile;

    struct _finddata_t c_file;   //struct  _finddate_t 是包里面有的。不是我自己写的。

    if((hFile = _findfirst((s4+"*"+jpg).c_str(), &c_file )) != -1L)
//找到第一个图片,把这个图片赋值给c_file

    {

        //判断是否是文件夹,如果是文件夹,则不处理

        if (c_file.attrib != _A_SUBDIR)

        {

            string sFileInfo;

            sFileInfo=c_file.name;  //这里的name不包含路径

            size_t found=sFileInfo.find("."); //size_t 是unsigned int型, 这里要找到图片文件名的数字部分。去掉.jpg

            string filename=sFileInfo.substr(0,found);
//得到文件名的数字部分。

            int filenumber=atoi(filename.c_str()); //转换为int

            if(filenumber>atoi(number.c_str()))

                //download the image

            {

                img=cvLoadImage((s4+sFileInfo).c_str());

                //save the image

                string newimg_str="D://coms661//project//new//"+number+jpg;

                cvSaveImage(newimg_str.c_str(),img);

           

            }

        }

        while(_findnext(hFile, &c_file ) == 0 )

        {

            //判断是否是文件夹,如果是文件夹,则不处理

            if (c_file.attrib != _A_SUBDIR)

            {

                string sFileInfo;

                sFileInfo=c_file.name;

                size_t found=sFileInfo.find(".");

                string filename=sFileInfo.substr(0,found);

                int filenumber=atoi(filename.c_str());

                if(filenumber>atoi(number.c_str()))

                {

                    //download the image

                    img=cvLoadImage((s4+sFileInfo).c_str());

                    //save the image

                    string newimg_str="D://coms661//project//new//"+sFileInfo+jpg;

                    cvSaveImage(newimg_str.c_str(),img);

                  

                }

            }

            

        }

        _findclose(hFile);//关闭

        system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐