qq_41747698 2021-12-14 15:38 采纳率: 75%
浏览 65
已结题

C++ /Qt opencv如何实现windows照片命名

想要做一个批量保存图片 imwrite(string, img)的功能,
但是只能找到简单的for循环批量保存图像,


for( i=0;i<=n;i++){
imwrite(...);
}


问题是如果想做到类似window相册的功能,即imwrite不会覆盖已存在的相片,如果发现重复又会自动重新命名 save(1) save(2),应该如何实现
觉得将所有文件名读取至一个list 每次imwrite图像都遍历名称一遍似乎也不太对,一两千张下来会导致很耗时

更正:
刚刚想到一个缓存的方法,不知道是否可行,一个文件夹已存在:

001.jpg, 002.jpg

现希望新生成的直接命名为003.jpg而非覆盖方法
生成时固定名称保存图像为

 huancun_001.jpg. huancun_002.jpg

然后写一个批量重命名程序,
在程序结束后批量重命名:

001.jpg 002.jpg 003.jpg 004.jpg

好像这样就可以按照原顺序命名?

  • 写回答

3条回答 默认 最新

  • _GX_ 2021-12-14 16:24
    关注
    
    // g++ -Wall -std=c++17 main.cpp
    
    #include <iostream>
    #include <cstdio>
    #include <fstream>
    #include <filesystem>
    
    int main()
    {
        int n;
        std::cin >> n;
        char filename[32];
        for (int i = 1; i <= n; i++)
        {
            std::sprintf(filename, "%03d.txt", i);
            int j = 1;
            while (std::filesystem::exists(filename))
                std::sprintf(filename, "%03d-%d.txt", i, j++);
            std::ofstream file(filename);
            file << i;
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 修改了问题 12月14日
  • 修改了问题 12月14日
  • 展开全部

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示