1、函数说明

string::find()函数:是一个字符或字符串查找函数,该函数有唯一的返回类型,即string::size_type,即一个无符号整形类型,可能是整数也可能是长整数。如果查找成功,返回按照查找规则找到的第一个字符或者子串的位置;

如果查找失败,返回string::npos,即-1(当然打印出的结果不是-1,而是一个很大的数值,那是因为它是无符号的)。

string::npos静态成员常量:是对类型为size_t的元素具有最大可能的值。当这个值在字符串成员函数中的长度或者子长度被使用时,该值表示“直到字符串结尾”。作为返回值他通常被用作表明没有匹配。
string::npos是这样定义的:static const size_type npos = -1;

glob函数:把pattern路径下的所有文件的名字存到result中

2、main.cpp

void cv::glob ( String pattern,
std::vector< String > & result,
bool recursive = false //递归
)
#include <iostream>
#include <opencv2/opencv.hpp>
#include<stdio.h> using namespace std;
using namespace cv; int main()
{
cv::Mat outImage;
cv::String src_path = "/home/qian/rgbd_dataset_freiburg1_desk/rgb";
cv::String newName_path = "/home/qian/rgbd_dataset_freiburg1_desk/output/";
char newName[];
std::vector<String> filenames;
cv::glob(src_path, filenames);//获取路径下所有文件名
cout << "filenames.size:" << filenames.size() << endl;
for(int i = ; i < filenames.size(); i++)
{
String ImgName = filenames[i];
if(ImgName.find(".png") != String::npos)//匹配.png文件
{
outImage = imread(ImgName,CV_LOAD_IMAGE_UNCHANGED);//CV_LOAD_IMAGE_UNCHANGED以原始图像读取 sprintf(newName, "%04d.png", i);
imwrite(newName_path+newName, outImage);//文件夹必须提前创建,否则代码执行没有效果
cout << newName_path+newName << endl;
}
else
{
cout << "NOT A PNG IMAGE" << endl;
}
}
return ;
}

3、CMakeList

cmake_minimum_required(VERSION 3.14)
project(SlamPractice) FIND_PACKAGE(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) set(CMAKE_CXX_STANDARD ) add_executable(SlamPractice main.cpp) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

opencv3 使用glob遍历并修改文件名的更多相关文章

  1. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

    原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...

  2. Java小工具 根据文本批量修改文件名

    功能 可以根据使用路径修改文件名,已经测试,可以成功运行 思路 先是读取到txt文本文件,之后使用String的spilt进行分割,每一行的格式为 旧名字 新名字,中间的空格可以使用|或者其他字符代替 ...

  3. ML二:python批量修改文件名-测试KDTree

    (1):#批量修改文件名 import os import numpy as np import string import shutil prefix =''#单引号,前缀! sufix ='txt ...

  4. Python批量修改文件名模板

    源码如下:import os import re import sys filePath = r'F:\BaiduNetdiskDownload\COVID-19CTSeg\3DUNet-Pytorc ...

  5. node实现文件属性批量修改(文件名)

    前言 书接上回,我们实现了批量修改文件的时间,但是却没有实现文件名称的批量修改,是因为我也说过,没有界面的话直接在命令行实现显得有点繁琐,所以我们就通过接口+界面的方式来实现我们这个小需求吧.所以,闲 ...

  6. rename 批量修改文件名

    1.rename的用法 rename与mv的区别就是mv只能对单个文件重命名,而rename可以批量修改文件名 linux中的rename有两种版本,一种是C语言版的,一种是Perl版的.早期的Lin ...

  7. Python 批量修改文件名

    最近下载了几部美剧(越狱.迷失.权利的游戏......),每集文件名都好长好长..想改短一些,但一个一个改太累了,于是写了个脚本来实现批量修改: 修改前文件名: 修改后文件名: 代码实现: #enco ...

  8. jackson中JSON字符串节点遍历和修改

    有些场景下,在实现一些基础服务和拦截器的时候,我们可能需要在不知道JSON字符串所属对象类型的情况下,对JSON字符串中的某些属性进行遍历和修改,比如,设置或查询一些报文头字段. 在jackson中, ...

  9. 使用Java中File类批量创建文件和批量修改文件名

    批量创建文件 int cont = 1; String s = "E:\\学习资料\\Java笔记-"; while(cont<100){ File f = new File ...

随机推荐

  1. super 关键字的使用及说明

    super 关键字主要用于访问父类的变量和方法. 代码示例: public class Student { String name; public Student(){ System.out.prin ...

  2. hive sparksession查询只显示defalt库问题

    1.spark环境记得拷贝进hive.xml 2.SparkSession.builder().enableHiveSupport()记得加上enableHiveSupport 3.window记得w ...

  3. Xcode常见路径

    模拟器安装的位置: /Library/Developer/CoreSimulator/Profiles/Runtimes 可以通过Xcode安装  模拟器程序的沙盒 Xcode编译生成的Product ...

  4. Mysql优化-字段设计

    摘抄并用于自查笔记 1. 对精度有要求decimal float 类型用于表示单精度浮点数值,而double类型用于表示双精度浮点数值,float 和 double 都是浮点型,而 decimal 是 ...

  5. vue cli3使用webpack4打包优化

    去掉console.log,以及开启gzip const CompressionPlugin = require('compression-webpack-plugin');//引入gzip压缩插件 ...

  6. 查看收到的邮件的来源ip以及包信息

    有时我们需要知道收到的邮件是从哪台服务器发送过来的,或者想知道该邮件的报文头是怎样的.以下以网易邮箱为例介绍如果抓取这些信息. 首先我们需要知道网易邮箱的访问服务器(拉协议),由于SMTP是推的协议, ...

  7. leetcode-17-电话号码的字母组合’

    题目描述: 方法一:回溯 class Solution: def letterCombinations(self, digits): """ :type digits: ...

  8. react 实现类似vue中的<keep-alive>的功能,并解决antd-mobile切换回来时的空白

    在移动端的spa页面中,只要使用到了路由就很有必要使用到状态保存的功能,这样才能保证在页面进行切换的时候,让用户可以看到刚才滑动的地方,让用户的体验更加友好.这儿我找到了react-router-ca ...

  9. iOS疑问

    1.__NSFrozenDictionaryM在数组类簇中是什么角色?

  10. spring mvc文件上传报错:Expected MultipartHttpServletRequest: is a MultipartResolver configured?

    报错原因:spring-mvc.xml 的配置文件中,配置文件上传id不为 “multipartResolver” 解决:id 改为 “multipartResolver”