我是靠谱客的博主 无聊斑马,最近开发中收集的这篇文章主要介绍图片的统一命名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实现图片的统一命名步骤如下:

%%%%第一步:将.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] = '';
			img = imread(filename); //每次循环都会读取一张图片  
		}
		printf("%s:n", filename);
		if (!img.data)
			continue;

		fflush(stdout);//清除文件缓冲区。以写方式打开文件时,将缓冲区内容写入文件  

		/*******************

		图像处理函数:
		例如实现所有图像的灰度化,加上如下代码即可
		cvtColor(img,img,CV_BGR2GRAY);

		*******************/
		

		imshow("src", img);
		int c = waitKey(5000) & 255;
		if (c == 'q' || c == 'Q' || !f)
			break;
	}
	if (f)
		fclose(f);
	return 0;

}


最后

以上就是无聊斑马为你收集整理的图片的统一命名的全部内容,希望文章能够帮你解决图片的统一命名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部