OpenPose: E0312 / 没有合适的用户定义的从 "fLS::clstring" 到 "const op::String" 的转换和其他错误

OpenPose: E0312 / no suitable user-defined conversion from "fLS::clstring" to "const op::String" and other errors

几周前我的 NB 崩溃了,而在我的 Linux Ubuntu 上运行良好的东西现在却不行了。我需要安装 OpenPose 并使其在我的第二个笔记本(我工作时用的笔记本)上运行。不幸的是,我这里只有Windows 10,无法安装其他OS。我无法使 CMake 正常工作,所以我抓住了最后的机会,我正在尝试 运行 它在 Visual Studio 中。我已将所有库、可执行文件和包含添加到我的项目中,并尝试 运行 我的项目。而现在,一些 GFLAGS 不工作。现在,有以下两种类型的一些错误:

E0312 / no suitable user-defined conversion from "fLS::clstring" to "const op::String"

C++ no operator matches these operands
    operand types are: std::tuple<op::ProducerType &, std::string &> = std::pair<op::ProducerType, op::String>

你能帮我解决这个错误吗?我知道出了什么问题,但我该如何解决呢?我假设它可能是新旧笔记本之间的另一个版本的 OpenPose。但是,如何解决呢?

非常感谢。 再见

我假设您使用的是最新的 OpenPose。从 OpenPose 1.6.0 开始,在代码中进行了一些更改,例如 op::String 作为 std::string 的容器。

鉴于问题中的信息非常有限,我提出以下建议 解决方法-

  1. 您可以通过执行 git checkout tags/v1.5.1
  2. 来检查 OpenPose 1.5.1
  3. 如果要坚持使用最新版本,请使用op::String 功能。下面给出了一个显示比较的示例-
    // Older versions, i.e., OpenPose version < 1.6
    const auto outputSize = op::flagsToPoint(FLAGS_output_resolution, "-1x-1");
    // Newer versions, i.e., OpenPose version >= 1.6
    const auto outputSize = op::flagsToPoint(op::String(FLAGS_output_resolution), "-1x-1");
    

最后,如果您能提供更多详细信息,例如 OpenPose 版本、MWE 等,我将不胜感激