周总结之视频去重用到的一些c++知识点
来源:互联网 发布:电子琴入门软件 编辑:程序博客网 时间:2024/05/18 02:11
前言
对于这一周的视频去重工作总结,主要使用的环境为vs2015+opencv3.3+ffmpeg,将其中的一些关键细节点进行总结。
其中重点是在编写代码时所遇到的c++的一些基础点如:类型间的转换、建立hash哈希表、创建打开保存文件等操作。
c++知识点积累
1 . 将多个string字符串累加到一个向量中:
定义及实现如下:
vector<std::string> vecString;string rstVideo1;string rstVideo2;vecString.push_back(rstVideo1);vecString.push_back(rstVideo2);
2 . string与const char* 及char*类型转换:
参考这里;
(1) const char*转换为 string,直接赋值即可
const char* tmp = “ds”.
string s = tmp;
(2) string转换为const char*,利用c_str(),因为c_str()是string中的方法。
string s = “ds”;
const char*tmp = s.c_str();
(3) const char*转化为char*,利用如下:
const char* tmp = "ds";char* p = const_cast<char*>(tmp);
(4) char*转化为const char*,直接赋值即可。
char* p = "ds". const char* tmp = p;
(5)char*转化为string,直接赋值即可。
char* p = "ds". string str = p;
(6)string转化为char*,走两步,先是string->const char*,然后是const char*->char*
string str = "ds"; char* p = const_cast<char*>(str.c_str()):
3 . 建立Hash表
从向量vecString1中依次读取其中的字符串,插入
#include <unordered_map>unordered_map<string,double> umap;unordered_map<string,double>::iterator it;//插入元素,建立hash表for(int m=0;m<vecString.size();++m){ string rstVideo_copy = vecString[m]; umap.insert(make_pair(rstVideo_copy,m));}//查找key是否存在hash表中it = umap.find(rstVideo_copy2);if(it == umap.end()){ cout << "find failed!" << endl;}//遍历hash表for(it == umap.begin();it != umap.end(); it++){ cout << it->first << " " <<it->second << endl;}
4 . 保存.yml文件:
将向量vecString写入到文件中对应的key : rstVideo下
FileStorage fs("VideoHah.yml",WRITE);fs << "rstVideo" << vecString;fs.release();
从文件中对应的key : rstVideo下读取向量vecString
FileStorage fs1("VideoHash.yml",READ);fs1["rstVideo"] >> vecString1;fs1.release();
判断文件是否打开成功
if(fs1.open("VideoHash.yml",READ)){ cout << "open successed" << endl;}
5 . 打开指定目录下的所有文件
string path1 = "trainVideo";string exten = "*";bool addPath = false;char file_root[255] = {0};Directory dir;//得到文件目录名字,判断下面有多少文件,遍历输出文件名vector<string> filenames = dir.GetListFiles(path1,exten,addPath);for(int j=0;j<filenames.size();j++){ sprintf_s(file_root,"%s\\%s",path1,filenames[j].c_str()); cout << "file_root" << file_root << endl;}
6 . 判断文件目录是否存在,不存在则自动创建
// 循环创建img路径下的第j个文件夹char szFolder[255] = {0};sprintf_s(szFolder,"img\\%d\\",j);int n = SHCreateDirectoryEx(NULL,szFolder,NULL);
总结
后续仍在进行中,仍有很多知识点尚未记录其中,日后会继续添加,未完待续…..
- 周总结之视频去重用到的一些c++知识点
- 黑马程序员-winform视频总结的一些知识点
- 黑马程序员—C重点--总结一些琐碎的知识点
- 视频图像去噪的一些理解
- C++的一些知识点总结
- ios一些知识点的总结
- Java一些知识点的总结
- 树的一些知识点总结
- 总结的一些小知识点
- linux之c语言开发的一些知识点
- 需要去学习去总结的知识点(线程)
- java常用到的知识点总结之集合、泛型
- java常用到的知识点总结之IO流
- java常用到的知识点总结之线程
- C语言的一些知识点
- C语言的一些知识点
- UI-视频知识点总结
- Orcale 视频知识点总结
- OpenGL教程
- 数据结构实验之排序六:希尔排序
- js1
- LeetCode.343 Integer Break
- LeetCode week 17 : Number of Atoms
- 周总结之视频去重用到的一些c++知识点
- python简介
- 手工制作学数学——三维空间八个象限
- self4j log4j配置与调用
- 栈的顺序存储及实现
- 自顶向下设计C语言贪吃蛇
- java 开发模式之四 : 单例模式
- 笔记:深度学习驱动的自动驾驶新主流框架盘点
- angularjs控制器间传值的五种方案