#include <iostream>
#include <string>
using namespace std;
void main()
{string path = "C:/Visual Studio 2019/Projects/VOC2007_makevideo/000001.txt";//1.获取不带路径的文件名string::size_type iPos = path.find_last_of('/') + 1;string filename = path.substr(iPos, path.length() - iPos);cout << filename << endl;//2.获取不带后缀的文件名string name = filename.substr(0, filename.rfind("."));cout << name << endl;//3.获取后缀名string suffix_str = filename.substr(filename.find_last_of('.') + 1);//获取('.')后面的位置到结尾的字符串cout << suffix_str << endl;
}

1. s.substr(0,5):获得字符串s中从第0位开始,长度为5的字符串;默认时的长度为从开始位置到尾。

2. find_first_of(): 在字符串中查找第一个出现的字符c;

int find_first_of(char c, int start = 0)
    查找字符串中第1个出现的c,由位置start开始。
    如果有匹配,则返回匹配位置;否则,返回-1.

默认情况下,start为0,函数搜索整个字符串。

3. find_last_of():在字符串中查找最后一个出现的字符c;
    int find_last_of(char c):
    查找字符串中最后一个出现的c。有匹配,则返回匹配位置;否则返回-1.
    该搜索在字符末尾查找匹配,所以没有提供起始位置。

4. find()正向查找,rfind()反向查找

一、批量读取文件夹下的图片和txt文档并处理

#include <iostream>
#include <sstream>

#include <vector>
#include <string>
#include "ImageProcess.h"
#include <stdio.h>
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>

void main()
{
    std::string imgdir = "C:\\Visual Studio 2019\\Projects\\VOC2007";
    //创建一个String类型 名字为image_files的vector
    string pattern_img = imgdir + "\\img\\*.jpg";
    vector<string> image_files;
    cv::glob(pattern_img, image_files);//把pattern_img路径下所有文件名存在image_files中
    
    for (int i = 0; i < image_files.size(); ++i) {
        
        string::size_type iPos = image_files[i].find_last_of('\\') + 1;
        string filename = image_files[i].substr(iPos, image_files[i].length() - iPos);
        std::cout << filename << std::endl;

//2.获取不带后缀的文件名
        string name = filename.substr(0, filename.rfind("."));
        std::cout << "无后缀:"<< name << std::endl;
        cv::Mat img = cv::imread(image_files[i]);//000053_testimg.png
        
        vector<vector<double>> data;
        txt_to_vectordouble(data, imgdir + "\\labels\\" + name + ".txt");
        std::cout << "txtdir: " << imgdir + "\\labels\\" + name + ".txt" << std::endl;
        CImgProcess w;
        w.ImgProcess_second(img, data);
        string write_name = imgdir + "\\results\\" + name + ".jpg";
        std::cout <<"write_name: " << write_name << std::endl;
        cv::imwrite(write_name, img);
    }

二、批量保存图片

int k = 1;
    char writename[40];
    sprintf(writename, "%d%s", k, ".jpg");//sprintf将数据格式化写入字符串writename中
    imwrite(writename, colorImage);

三、将文件夹的图片合成视频

/*************************将保存的图片合成为视频**********************************/
    string pattern_img = imgdir + "\\results\\*.jpg";
    vector<string> image_files;
    cv::glob(pattern_img, image_files);//把pattern_img路径下所有文件名存在image_files中
    
    int isColor = 1;
    //每秒钟的帧率,即一秒放多少帧图片  
    int fps = 2;
    //获取图片的宽和高  
    int frameWidth = 640;
    int frameHeight = 480;
    //声明VideoWriter类,写入视频  
    cv::VideoWriter writer;

/*cv::VideoWriter::fourcc('M', 'P', '4', 'V')生成MP4格式视频*/

/*cv::VideoWriter::fourcc('M', 'J', 'P', 'G')生成avi格式视频,大小比'X', 'V', 'I', 'D'大*/ /*cv::VideoWriter::fourcc('X', 'V', 'I', 'D')生成avi格式视频*/
    writer.open("D:\\test.mp4", writer.fourcc('m', 'p', '4', 'v'), fps, cv::Size(frameWidth, frameHeight));

for (int i = 0; i < image_files.size(); ++i) {
        cv::Mat img = cv::imread(image_files[i]);//000053_testimg.png
        if (img.empty())
        {
            break;
        }
        //cv::imshow("src", img);
        //cv::waitKey(30);
        //调用writer类,传入图片  
        writer.write(img);
    }

c++批量读取图片并处理相关推荐

  1. opencv图像处理时使用stringstream批量读取图片,处理后并保存

    简介: 同文件输入输出流一样,使用stringstream可以批量读取图片,处理后并进行保存.因为C++中头文件 stringstream既可以从string读数据也可向string写数据,利于其这个 ...

  2. python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...

    本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张 ...

  3. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  4. Python-OpenCV 从文件夹中批量读取图片

    实现从文件夹批量读取图片并将图片裁剪为(128x128大小) import os.path import glob import cv2 def convertjpg(jpgfile,outdir,w ...

  5. 某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!

    1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和拍摄时间.如果将原始照片直接发送发布到网上,无意中就泄漏了自己的位置信息,有恶 ...

  6. python批量读取图片并复制入word_提取出 Word 文档里的图片 并利用 python 批量转换格式...

    日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张 ...

  7. python批量读取图片并复制入word_提取word文档中的图片并使用Python进行批量格式转换,出,Word,里,利用,python...

    日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张 ...

  8. opencv中批量读取图片并保存

    之前一直在写python,突然要用C++,因为涉及到图像处理,需要批量读取并存储图片,这里对图片的批量处理代码做一下汇总: 方法1:比较简单,唯一的要求就是文件夹下的图片名称是有规律的,比如1,2,3 ...

  9. OpenCV(6):基于本地库的图像识别软件(批量读取图片)

    为了识别宠物的种类以及其他的扩展功能,我参考网上的识图软件原理,写了一个简化版的demo:从本地的库中匹配与所选图片最像的图片.(1.具体的其他代码可以参考其他博客的文件:2.所有文件路径改成自己的即 ...

最新文章

  1. java 之 面试题-银行业务调度
  2. Java_异常_05_ OutOfMemoryError: Java heap space
  3. 英特尔收购McAfee的10种结局猜测
  4. 面试官问:为什么 Java 线程没有 Running 状态?我懵了
  5. 信息安全工程师笔记-网络安全风险评估技术原理与应用
  6. 信息学奥赛一本通(1158:求1+2+3+...)
  7. vue 深度拷贝数组_前端深拷贝和浅拷贝
  8. tune kubernetes eviction parameter
  9. 史上最强 Java 学习路线图!
  10. 万卷书计划-2016年开启
  11. VRRP的工作原理及运用
  12. 国企计算机岗位职称申请,在国企工作如何评定职称
  13. virtualbox突然打不开虚拟机解决方法
  14. 台式计算机连不上网怎么办,台式电脑插了网卡连不上网怎么办?几个方面介绍及解决方法...
  15. 蚂蚁花呗的交易分期(有别于账单分期)
  16. UE4Material_RainEffect(雨的效果)
  17. 生成和查看dump文件
  18. git 将本地项目关联到远程仓库
  19. cj20n sap 报错未知列的名称_sapps操作手册
  20. 鲎试剂停产,内毒素检测大地震!重组C因子法了解一下

热门文章

  1. 眼图(Eye Diagram)与数字信号测试
  2. 丁香花开,又是一年毕业时
  3. Clannad游戏中日双字幕补丁
  4. 如何做一个网站?建网站需要什么?
  5. 低频工业读写器|读卡器|阅读器CK-LR03-A01与FX1N三菱PLC联机应用手册
  6. 虚拟机VMware Workstation 7.1.4官方原版下载+激活密钥+汉化补丁
  7. 软硬件运维主要包括哪些个方面 需要注意哪些关键问题,一共八百字
  8. 什么是 EthereumFair (ETHF/ETF)?
  9. 中国人民公安大学 网络对抗技术实验报告一
  10. 解决Windows提示缺少msxml6r.dll文件的问题