[VS]批量读取文件夹,自动改图片名字

// 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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱多多先森

你的鼓励,是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值