Practice1+将无序图像重命名为有序图像+将图像保存到指定文件夹

本文介绍如何利用OpenCV的cv::glob函数获取指定路径下的所有图像文件,并通过代码实现批量重命名和保存到特定文件夹的操作。算法部分讲解了cv::glob的用法,代码部分展示了具体的实现细节。
摘要由CSDN通过智能技术生成

算法

  1. 使用cv::glob函数将path下所有文件名称存到filenames中
    void cv::glob ( String pattern,
    std::vector< String > & result,
    bool recursive = false //递归
    )

  2. 定义一个图像矩阵src,将原路径下图像逐张赋值给src

  3. 使用sprintf为每张图像重命名,根据i命名,赋给Rename

  4. 使用imwrite保存地址和图像名称

代码

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>


using namespace std;
using namespace cv;

int main() {
    char Rename[50];    //图像重命名的名称
    cv::Mat src;
    cv::String path = "/home/automobile/wcm/database/TUMData/rgbd_datase_freiburg1_rpy/rgbd_dataset_freiburg1_rpy/rgb+part";
    cv::String dest = "/home/automobile/wcm/database/TUMData/rgbd_rename/" ;
    cv::String savedfilename;
    std::vector<cv::String> filenames;

    cv::glob(path, filenames, false);

    //判断文件夹是否为空
    if (filenames.size() == 0){
        cout << "No image files " << endl;
    }

    //将每副图像赋值给定义的src,并重命名
    for (int i = 0; i < filenames.size(); i++){
        //图像赋值,浅拷贝
        src = cv::imread(filenames[i], CV_LOAD_IMAGE_UNCHANGED);
        //Rename为每幅图像的重命名
        sprintf(Rename, "%05d.png", i );
        //将重命名的图像写入特定文件夹
        cv::imwrite(dest+ Rename , src);
        cout << "重命名图像路径为 : " << dest + Rename << endl;

    }
    std::cout << "All done :)! Hello, World!" << std::endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值