概述
实现图片的统一命名步骤如下:
%%%%第一步:将.bat文件放在对应图片格式下面双击即可获得imslist.txt文件
%%%%第二步:运行.cpp文件即可将图片统一按序重命名(注意更改程序里面图片保存的路径)
#include <iostream>
#include <opencv2/opencv.hpp>
#include <string.h>
#include <fstream>
using namespace std;
using namespace cv;
#define IMAGENUM 116
int main()
{
Mat src;
string ImgName;
char OutName[50];
ifstream fin("imgslist.txt"); //imgslist.txt为要处理图像的名称列表
for (int framenum = 0; framenum<IMAGENUM && getline(fin, ImgName); framenum += 1)
{
cout << "处理:" << ImgName << endl; // 列表给出的为绝对地址,如果只给出图像名称,则需要加上绝对路径(如下)
//ImgName = "D:\11\" + ImgName;
ImgName = ImgName;
src = imread(ImgName, 1);
sprintf(OutName, "D:\11\2\%d.jpg", framenum+1);//直接以帧数来命名(简单粗暴)
imwrite(OutName, src); //保存重命名之后的图像
}
return 0;
}
生成imgslist.txt文件步骤如下:
第一步:在要重命名的文件夹中新建.txt文本文件
第二步:将下面语句复制到文本文件中
dir /b/s/p/w *.bmp > imgslist.txt (假如图片是bmp格式)
dir /b/s/p/w *.jpeg > imgslist.txt (假如图片是jpeg格式)
dir /b/s/p/w *.jpg > imgslist.txt (假如图片是jpeg格式)
第三步:将txt文件后缀改为.bat,然后双击会生成imgslist.txt文件,即程序中输入列表。
我们有时候在进行实验时,经常要对不同图片进行实验效果观察,这里面最大的麻烦就是不断的图片的路径进行更改,所以为了方便我们可以把想要观察实验结果的图片路径全部放在一个.txt文件里依次实现对所有图片的处理。这里面.txt文件的生成和上面一样,下面是实现的代码:
#include<opencv2opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat img;
FILE* f = 0;
char _filename[1024];
f = fopen("posListINRIA.txt", "rt"); /*posListINRIA.txt存放的系列图片的地址*/
for (;;)
{
char* filename = _filename;
if (f)
{
if (!fgets(filename, (int)sizeof(_filename)-2, f)) //每次读取一行,即一张图片的路径
//destination,maxnumber,souce,返回读取的字符串,遇到换行或EOF结束
//最多能读取maxnumber-1个字符,因为默认会加上‘ ’,要给它预留位置
break;
//while(*filename && isspace(*filename))
// ++filename;
if (filename[0] == '#')
continue;
int l = (int)strlen(filename);
while (l > 0 && isspace(filename[l - 1]))
--l;
filename[l] = '