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

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日
  • 展开全部

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功