图片缩略图

cvyamlParser

version 2.0.3 (11.8 MB) by 季格兰Mkhoyan
一个简单的yaml解析器OpenCV数据类型到Matlab使用新的Matlab c++数据API

142下载

更新2021年2月17日

从GitHub

在GitHub上查看许可证

一个简单的yaml解析器OpenCV数据类型到Matlab使用新的Matlab c++数据API。该文件readcvYaml可以用来有效地通过YAML文件从OpenCV传输数据到Matlab。解析器能够在运行时推断出正确的数据类型,并以相应的Matlab结构返回它。它使用OpenCV文件存储类。此外,解析器能够将具有相同基名的索引变量折叠成多维结构。

用法:https://youtu.be/jHjLLROfxhg

更新版本!:增加了Window金宝apps支持和多通道矩阵支持
在最新的更新(v2.0)中增加了windows mex函数和编译指令。此外,parces得到了极大的改进,现在允许嵌套混合结构(地图,矢量)和多通道矩阵和原始图像数据。

安装
1:进入mex文件夹
cd墨西哥人/
2:调用带有优化标志的mex命令:
3级优化虽然不是必要的,但是很好。默认情况下使用优化级别2。确保链接到正确的打开cv库和包括路径:

/src/readcvYaml.cpp -I [path_to_includes] -L [path_to_lib]
例如:

/src/readcvYaml.cpp -I/usr/local/include/opencv4 -L/usr/local/lib/ -lopencv_core . conf . conf . conf . conf . conf . conf . conf . conf
如果mex成功,将在控制台中打印一条详细消息。

3:在matlab路径变量中添加mex路径:
你可以通过导航到mex文件夹并调用:

目录(pwd);savepath;
从现在开始,readcvYaml mex函数应该可以从matlab环境中的任何路径访问

4:引用
请使用下面的DOI引用cvyamlParser

5:许可证
有关代码分发、使用和版权的信息,请参阅许可证文件。代码是在BSD 3条款许可下提供的。关于OpenCV和Matlab的许可信息:https://opencv.org/license/https://in.mathworks.com/pricing-licensing.html

用法:
在选择的数据集上调用readcvYaml。该函数接受文件名和排序选项作为输入。默认情况下,readcvYaml将解析yaml文件中列出的变量名,并将其分配给具有相应字段的结构。例如:

s = readcvYaml(“. . /数据/ test_data.yaml”)
s =
结构体字段:
matA0(1000×3双):
matA1(1000×3双):
matA2(1000×3双):

在readcvYaml中实现了一个方便的选项,可以根据基名和数字标识符对数据进行排序。在使用排序选项时,具有唯一基名的条目将被折叠到多维结构中。这是非常方便的,当你有类似的数据集属于同一类别或实验条件等。这是这样做的:

s = readcvYaml(“. . /数据/ test_data.yaml”,“排序”)
s =
结构体字段:

马塔(1×3结构):
然后排序将矩阵的matA基名存储在2d结构中,可以通过以下方式访问:

s.matA (1) .matA
数字标识符不必是连续的,排序将按升序排序和存储。即:A1, A2, A7, A12等等。s.matA(1)。索引存储数字标识符。

解析器将自动识别存储变量的数据类型,并将其返回到结构中。它能够处理OpenCV和Matlab环境中使用的所有常见类型。常见的数据类型是从OpenCv返回到matlab:

OpenCV——> Matlab——sizeof
CV_8U,CV_8US——> int8_t(char)——1
CV_16S,CV_16U——> short——2
CV_32S——> int——4
CV_32F—> float—4
CV_64F——>双——8
解析器可以转换存储在yaml文件中的向量、矩阵和单个变量。虽然没有经过测试,但它也可以处理xml文件。请参考test_data。yamland genyamlData.cpp see an example of how the data is generated.

基准测试
在linux和osx文件夹中提供了linux和osx平台的基准测试结果。基准测试分别在标准Dell Optiplex 7400和2.3 GHz Intel Core i5 16G macbook上进行。

要运行基准测试,请遵循以下步骤:

1:生成测试数据以测试功能:
进入src文件夹并编译genyamlData:

cd src /
g++ -std=c++11 genyamlData.cpp -o genyamlData -I [path_to_cv_includes] [opencv_core_lib]
例如:

g++ -std=c++11 genyamlData.cpp -o genyamlData -I /usr/local/include/opencv4 -lopencv_core .cpp -o
然后运行:

genyamlData [outout_path_of_yaml]
例如:

genyamlData . . /数据/ test_data.yaml
在你自己的电脑上运行基准测试:
在benchmark文件夹中提供了一个简单的脚本,用于在您自己的数据上运行readcvYaml。只需使用N参数选择迭代次数并运行benchmarktest_cvYaml.m。基准测试对5x[1000x3] double、5x[2000x3] float、5x[2000x3] int、5x[3000] double、5x[6000] float和5x[6000] int向量执行。看到test_data。yamlfor the actual dataset.

在linux Optiplex系统上进行基准测试的结果如图所示。如预期的那样,排序的开销稍微大一些,但对于当前数据集来说可以忽略不计。

引用作为

季格兰Mkhoyan(2021)。cvyamlParserGitHub (https://github.com/tmkhoyan/cvyamlParser)。检索

Tmkhoyan。Tmkhoyan/CvyamlParser:首次公开发布。2019年Zenodo, doi: 10.5281 / zenodo.2703498。

查看更多的风格
MATLAB版本兼容性
创建R2019a
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!
要查看或报告这个GitHub插件中的问题,请访问GitHub库
要查看或报告这个GitHub插件中的问题,请访问GitHub库