由于火线相机因其带宽限制而变得过时,相机制造商似乎正在转向 USB 3.0 或千兆以太网接口。两者都有许多制造商都遵守的标准 USB3 Vision 和 GigE Vision。
然而,似乎每个制造商——Basler、Pointgrey、Ximia 和其他制造商——都有自己的 SDK 来连接他们的相机。在开发应用程序时,开发人员需要学习并与每个 API 进行交互,这很痛苦,或者坚持一个制造商。我可能会被误解,但在这种情况下,如果开发人员需要使用制造商相关的 API,那么行业标准的意义何在?
对于火线相机,开发人员可以访问 libdc1394 跨平台、高级 API。他们无需担心相机的制造商,也不必编写单独的驱动程序。USB3 Vision 和 GigE Vision 是否也有这种可能?如果是这样,谁来开发它?
我对这个api处理地图与序列的处理有很基本的问题.说我有以下结构:
foo_map["f1"] = "one";
foo_map["f2"] = "two";
bar_map["b1"] = "one";
bar_map["b2"] = "two";
Run Code Online (Sandbox Code Playgroud)
我希望将其转换为以下YAML文件:
Node:
- Foo:
f1 : one
f2 : two
- Bar:
b1 : one
b2 : two
Run Code Online (Sandbox Code Playgroud)
我会这样做:
node.push_back("Foo");
node["Foo"]["b1"] = "one";
...
node.push_back("Bar");
Run Code Online (Sandbox Code Playgroud)
但是在最后一行节点现在已经从一个序列转换为一个映射,我得到了一个例外.我能做到这一点的唯一方法是输出地图地图:
Node:
Foo:
f1 : one
f2 : two
Bar:
b1 : one
b2 : two
Run Code Online (Sandbox Code Playgroud)
这个问题是我无法读回这些文件.如果我迭代Node,我甚至无法获得节点迭代器的类型而不会出现异常.
YAML::Node::const_iterator n_it = node.begin();
for (; n_it != config.end(); n_it++) {
if (n_it->Type() == YAML::NodeType::Scalar) {
// throws exception
}
}
Run Code Online (Sandbox Code Playgroud)
这应该很容易处理,但一直让我发疯!