vs2013+opencv2.4.11环境:批量命名+处理图片+规范保存图片名

       记得挺早之前做过一个深度学习相关的小项目,里面要用到大量的图片,但是图片的名字不规整,而且一张一张处理起来太浪费时间,于是做了好久才写出来,但是看着很别扭感觉,今天重新整理一下批量命名和处理图片。

1、批量命名图片,参考博文:https://blog.csdn.net/lewky_liu/article/details/80490585

写一个脚本文件:process.bat,放在你想要的重命名的图片的相同目录下,文件内容如下:

@echo off
set a=-1
setlocal EnableDelayedExpansion
for %%n in (*.jpg) do (
set /A a+=1
ren "%%n" "Train_!a!.jpg"
)

上述代码可以将同目录下所有图片规范命名,命名格式为“Train_0.jpg"\rightarrow “Train_n.jpg"。

看一下效果,

处理前:

处理后(点击.bat文件,记得先把360关掉,有毒):

处理过后的图片可以用在第二步的批量处理图片

2、批量处理图片+规范保存图片名(原创,转载请注明出处:https://blog.csdn.net/hzpzlz5211314/article/details/83141187

话不多说,直接上代码:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
#include <fstream> 

using namespace cv;
using namespace std;

int main()
{
    string fileName, destFiles;
    string pattern_jpg = "F:\\image\\*.jpg";                 //原始图片所在路径,可自行修改
    vector<String> image_files;    

    glob(pattern_jpg, image_files);
    /*
    void cv::glob ( String pattern, std::vector< String > & result, bool recursive = false)
    作用:将pattern路径下所有文件名存入result中
    */
    if (image_files.size() == 0)                                    //判断是否读取到图片
    {
        cout << "No image files[jpg]" << endl;
        return 0;
    }
     
    for (unsigned int i = 0; i < image_files.size(); ++i)    //image_file.size()代表文件中总共的图片个数
    {           
        //int 转换为 string
        stringstream ss1;
        string str1;
        ss1 << i;
        ss1 >> str1;

        //为了方便,在“源.cpp”同级目录下建立srcImage和grayImage,分别用于保存原图和灰度图

        fileName = "srcImage/Train_" + str1 + ".jpg";        //根据图片的名称读取批量命名好的图片,也可以用绝对路径
        destFiles = "grayImage/Test_" + str1 + ".jpg";       //处理后的文件路径及图片名,图片名为"Test_0.jpg"
        //cout << fileName << endl;


        /*
        在这里对图片进行操作
        */
        //下述操作为灰度图转换:
        Mat srcImage = imread(fileName, 1);
        Mat grayImage;
        //imshow(grayFile, grayImage);                                    //只会显示文件夹中最后一张图片,因为被覆盖了
        cvtColor(srcImage, grayImage, CV_BGR2GRAY);      //opencv库函数,转换为灰度图(原图不能为灰度图,否则会报错)

        imwrite(destFiles, grayImage);                                     //将图片写入到grayImage目录下
    }
    cout << "批量转换成功" << endl;
    system("pause");
    return 0;
}

看一下效果,要将第一步批量重命名后的图片拷贝至srcImage文件夹下:

处理前:

批量处理后(灰度图):

你也可以在其中对图像做不同的处理,不仅仅是灰度转换!这样就可以完成深度学习的前期处理

完美!

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值