版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CV2017/article/details/83150656
背景:因为同事叫我写一个获取 Opencv 视频中的指定帧图片,然后将其按照公司规则改名(视频的文件名作为前缀)存在另一个文件夹的代码,于是就要想办法获取视频的文件名,查了许久,查不到现有的函数,于是自己写了一个
代码:
char* teGetVideoName(const char* pVideoPath,char* pVideoName)
{
int nL = 0;
int nD = 0;
for (int i = 0; i < strlen(pVideoPath); i++)
{
if (pVideoPath[i] == '\\') //转义字符
{
nL = i;
}
else if(pVideoPath[i] == '.')
{
nD = i;
}
}
for (int j = 0; j < (nD - nL - 1); j++)
{
pVideoName[j] = pVideoPath[nL + j + 1];
}
return pVideoName;
}
代码参数含义解读:
- pVideoPath 指你的视频路径,比如 D:\Video\test.avi
- pVideoName 指视频的名字,比如 视频路径为 D:\Video\test.avi,则视频名字为 test
- nL 指视频路径(字符串)中最后一个 ‘\’ 的下标
- nD 指视频路径(字符串)中 '.'(小数点,一般都只有 1 个,且在视频文件名字后) 的下标
完整例子(C++ 版):
#include <iostream>
using namespace std;
char* teGetVideoName(const char* pVideoPath,char* pVideoName)
{
int nL = 0;
int nD = 0;
for (int i = 0; i < strlen(pVideoPath); i++)
{
if (pVideoPath[i] == '\\') //转义字符
{
nL = i;
}
else if(pVideoPath[i] == '.')
{
nD = i;
}
}
for (int j = 0; j < (nD - nL - 1); j++)
{
pVideoName[j] = pVideoPath[nL + j + 1];
}
return pVideoName;
}
int main()
{
char* pVPath = "E\\HangZhouDiTong.avi";
char pVName[256] = {'0'};
cout << "视频的名字为:" << teGetVideoName(pVPath, pVName) << endl;
return 0;
}
允许结果: