- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试编写一个文件(json/yaml/xml,格式无关紧要)来存储具有特定 cv::Mat
的文件路径。当我最终意识到 here ,组合键不允许路径(例如/home/user)。
void
persist_histograms(const QString& filepath, const QHash<QString, Mat>& histograms)
{
cv::FileStorage storage(filepath.toStdString(), cv::FileStorage::WRITE);
QHashIterator<QString, Mat> it(histograms);
while (it.hasNext()) {
it.next();
storage << it.key().toStdString() << it.value();
}
}
这是 cv::FileStorage
类的真正限制吗?还是有解决办法?
最终结果应该是这样的:
{
"/my/path/to/file.png": "<my cv::Mat serialization here>",
"/my/path/to/another/file.png": "<my cv::Mat serialization here>",
...
}
错误的发生与格式无关。如果我传递一个 filepath
那以 yaml/json/xml 结尾错误是相同的:如果尝试在 key 的开头添加一个字母,则会出现此错误:
这是我在尝试上面的代码时遇到的错误:
OpenCV Error: Unspecified error (Incorrect element name /home/user/dtd/images/freckled/freckled_0055.jpg) in operator<<, file /build/opencv/src/opencv-3.2.0/modules/core/src/persistence.cpp, line 6877
terminate called after throwing an instance of 'cv::Exception'
what(): /build/opencv/src/opencv 3.2.0/modules/core/src/persistence.cpp:6877: error: (-2) Incorrect element name /home/user/dtd/images/freckled/freckled_0055.jpg in function operator<<
这是我在尝试向 key 开头添加字母时遇到的错误。
OpenCV Error: Bad argument (Key names may only contain alphanumeric characters [a-zA-Z0-9], '-', '_' and ' ') in icvJSONWrite, file /build/opencv/src/opencv-3.2.0/modules/core/src/persistence.cpp, line 3896
最佳答案
我好像遇到过类似的错误。如果我尝试像这样以 YAML
格式存储矩阵
std::string fName("/path/to/cameraParams.yml");
cv::FileStorage fs(fName, cv::FileStorage::WRITE);
fs << "camera matrix" << cameraMatrix;
一切正常。但是一旦我将文件格式从 YAML
更改为 XML
std::string fName("/path/to/cameraParams.xml");
我得到一个错误
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.0.0-pre) /home/shura/software.downloads/libraries/opencv/opencv/modules/core/src/persistence_xml.cpp:83: error: (-5:Bad argument) Key name may only contain alphanumeric characters [a-zA-Z0-9], '-' and '_' in function 'writeTag'
据我所知,原因是 XML
格式不允许标签中有空格,而 YAML
允许。所以对于 YAML
下面的文件是完全有效的
%YAML:1.0
---
camera matrix: !!opencv-matrix
虽然对于 XML
这样的事情是不允许的
<?xml version="1.0"?>
<opencv_storage>
<camera matrix type_id="opencv-matrix">
一旦我用下划线替换“相机矩阵”中的空格,一切正常。
fs << "camera_matrix" << cameraMatrix;
据我所知here XML
格式对标记名称中可以包含的符号有一些限制。特别是,不允许在名称中使用斜杠。标签中似乎允许使用点,但出于某种原因,OpenCV 拒绝使用包含点的标签。
关于c++ - 在 FileStorage 中使用路径作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442956/
我有一个 .xlsx 文件,并将其转换为 .csv 文件。然后我将 .csv 文件上传到我编写的 Python 脚本中,但抛出错误。 由于文件是通过 HTTP 上传的,因此我使用 file = req
我正在使用 Flask、WTForms 和 Flask-WTF 来保存文件,但该文件始终存储为空文件。它没有显示任何错误。 表格: from flask_wtf import FlaskForm fr
我正在尝试使用 Django 中的文件存储。一切正常,但我想我的保存方法有问题。我有一个带有 FileField 的模型 download_url = models.FileField(verbose
我曾经在 opencv c++ 中使用过 FileStorage 类,它非常有用,但我找不到如何在 opencv python 中使用它。请帮我。谢谢 最佳答案 `import cv2 import
我正在尝试编写一个文件(json/yaml/xml,格式无关紧要)来存储具有特定 cv::Mat 的文件路径。当我最终意识到 here ,组合键不允许路径(例如/home/user)。 void pe
是否有类似类的东西可以用来存储文件和目录,就像 Zip 文件的使用方式一样? 因为我还没有找到任何“真正的”类来编写 Zip 文件(真正的类,如 真正的 类),如果能够将文件和目录存储在类似容器的文件
我通过 flask 制作了一个 api,它提交了一个文件,在后端收到它之后,我想使用 python requests 进一步将它上传到一个未知的服务器模块 如果我这样做,服务器会接受文件 - requ
我基本上是在读取 OpenCV FileNode 中的几个字段,进行一些计算,然后用计算的数据仅替换原始 OpenCV FileNode 中的一个字段。 我找不到任何允许我这样做的方法。有没有人这样做
我正在尝试使用 OpenCV 库将多个值写入 XML 文件。 我正在尝试保存我在项目中使用的结构之一: if (validCalib) { QString calpath = path() +
我正在尝试使用 OpenCV FileStorage 类从 YAML 文件中读取一些数据,但是 VS 2013 给出了 Run-Time Check Failure #2 - Stack around
我用这样的数据编写 vector : string filename= itemName+".yml"; FileStorage fs(filename, FileStorage::WRITE); f
我想使用 opencv FileStorage 对象编写一个 XML 文件。 我看到的大多数示例都像下面这样工作 FileStorage fs("d:\\1.xml" , FileStorage::W
我在 flask 应用程序中有以下路由,它接受上传的文件并将文件对象扔到函数中进行验证。这是一个准系统示例: def is_file_valid(file): if file.filename
我已使用 cv::FileStorage 成功将大小为 (10,10, CV_32F24) 的 Mat 保存到文本文件中。但是,当我尝试使用 cv::FileStorage 再次加载/读取它时,它失败
我正在尝试将“cv::FileStorage”中包含的内容“读取”到 CvRTrees(CvStatModel 实现之一)中。 “读取”函数需要一个 CvFileStorage* 和一个 CvFile
我有一个用 Xcode 编写的命令行 openCV 程序,它打开两个 XML 文件,分析然后比较它们。但是,我现在正尝试使用 QtCreator 将该程序放入 GUI 中,以便更容易理解输出。 问题是
我正在尝试实现 this项目,即 GenData.cpp,(用 C++ 编写)在 Java 中用于 KNN 分类器。 我遇到了这些代码行并卡住了: matClassificationInts.push
我在让 (x,y) = x+y; } } std::cout #include int _tmain(int argc, _TCHAR* argv[]) { cv::Mat test
我已经能够使用 FileStorage 成功地将关键点( vector )、描述符(Mat)和其他内容写入 yml 文件。但是,在我计算出一对图像之间的匹配项后,我无法将匹配项写入文件。 我假设这是因
我想使用 cv::FileStorage 类将我的 MarkerDistance 结构写入文件。 我尝试以各种方式重载 << 运算符,但它无法编译。而且我不确定到底出了什么问题。如果有人能指出正确的方
我是一名优秀的程序员,十分优秀!