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 华为ensp使用基本ACL限制公司网络访问
  • ¥15 帮我做下照片上的PLC题
  • ¥15 labview2022 使用modbus报缺少依赖?
  • ¥15 谷歌地图是不是不开通结算功能,api会使用不了哦
  • ¥15 unity腾讯云对象存储机型适配
  • ¥15 求全国交通咨询模拟代码,要求如下,可以完全在dev c++运行
  • ¥15 根据要求修改程序编码
  • ¥15 用 Python 做一个用 Excel 表导入的答题系统
  • ¥15 使用微信开发者工具实现一个“婚博会”小程序
  • ¥15 ros的rviz仿真机器人