// Getfile.cpp : 重命名文件夹内的所有图像并写入txt,同时也可通过重写图像修改格式
//配用Opencv2.4.10
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<io.h>
#include <opencv2\opencv.hpp>
#define IMGNUM 20000 //图片所在文件夹中图片的最大数量
char img_files[IMGNUM][1000];
using namespace cv;
int getFiles(char *path)
{
int num_of_img = 0;
long hFile = 0;
struct _finddata_t fileinfo;
char p[700] = { 0 };
strcpy(p, path);
strcat(p, "\\*");
if ((hFile = _findfirst(p, &fileinfo)) != -1)
{
do
{
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
continue;
}
else
{
strcpy(img_files[num_of_img], path);
strcat(img_files[num_of_img], "\\");
strcat(img_files[num_of_img++], fileinfo.name);
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
return num_of_img;
}
int main()
{
char path[] = "SrcImage"; //source image
char dstpath[] = "DstImage"; //destination image
int num = getFiles(path);
int i;
char order[1000];
FILE *fp = fopen("train.txt", "w");
for (i = 0; i < num; ++i)
{
printf("%s\n", img_files[i]);
IplImage *pSrc = cvLoadImage(img_files[i]);
sprintf(order, "DstImage\\%06d.jpg", i);
fprintf(fp, "%06d\n", i);
cvSaveImage(order, pSrc);
printf("Saving %s!\n", order);
cvReleaseImage(&pSrc);
}
fclose(fp);
return 0;
}
2.python版本,批量修改名字
# -*- coding:utf8 -*-
__author__ = "lingjun"
# E-mail: lingjum.qian@zying.com.cn
import os
############################################################
# 批量重命名
############################################################
def rename(input_path):
for f1 in os.listdir(input_path):
target_path=os.path.join(input_path, f1)
#print(f1)
for (path, dirs, files) in os.walk(target_path):
for filename in files:
#print(filename)
no_suffix_name=(filename.split('.')[0]).split("_")[0:5]
print(no_suffix_name)
#if suffix_name=='png':
new_name = f1 + '_' + filename
os.rename(path + "/" + filename, path + "/" + new_name)
print(new_name)
############################################################
# 批量去除带有特点字符的文件名,重命名
############################################################
def re_name(path):
for root, dirs, files in os.walk(path):
for name in files: # 遍历所有文件
pos = name.find("_label") # 把文件带有_label的字符删除
if (pos == -1):
continue
newname = name[0:pos] + ".png"
os.rename(os.path.join(root, name), os.path.join(root, newname))
print(newname)
if __name__=='__main__':
in_path = "F:/image/mask"
re_name(in_path)
参考文献:https://blog.csdn.net/liuyudong_/article/details/80319592
3.修改好了,那看看两个对应的图片,是否有遗漏的
(例如深度学习分割里面,image and label)
# -*- coding: utf-8 -*-
__author__ = "lingjun"
# E-mail: lingjum.qian@zying.com.cn
# 微信公众号:小白CV
import os
def file_name(file_dir):
label_list = []
image_list = []
for root, dirs, files in os.walk(file_dir):
for filename in files:
file_name=filename.split(".")[0]
if file_name.split("_")[-1] == 'label':
label_list.append(file_name)
else:
image_list.append(file_name+"_label")
diff = set(image_list).difference(set(label_list)) # 差集,在a中但不在b中的元素
print(len(diff))
for name in diff:
print("在a中但不在b中的元素", name + ".jpg")
diff2 = set(label_list).difference(set(image_list)) # 差集,在b中但不在a中的元素
print(len(diff2))
for name in diff2:
print("在b中但不在a中", name + ".jpg")
return label_list,image_list
# 其中os.path.splitext()函数将路径拆分为文件名+扩展名
if __name__ == '__main__':
#所有文件都放在这一个文件夹image里面
path1 = r'F:\image'
file_name(path1)