C/C++ 语言求视频文件的名字(需求在 Opencv 中)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

代码参数含义解读:

  1. pVideoPath 指你的视频路径,比如 D:\Video\test.avi
  2. pVideoName 指视频的名字,比如 视频路径为 D:\Video\test.avi,则视频名字为 test
  3. nL 指视频路径(字符串)中最后一个 ‘\’ 的下标
  4. 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;
}

允许结果:

 

猜你喜欢

转载自blog.csdn.net/CV2017/article/details/83150656
今日推荐