【问题标题】:'MSize' is not a member of cv::Mat'MSize' 不是 cv::Mat 的成员
【发布时间】:2015-06-06 16:33:29
【问题描述】:

出于好奇,我正在尝试运行这个 repo:https://github.com/jzeimen/PuzzleSolver/tree/master/PuzzleSolver

每当我尝试从 PuzzleDisjointSet.cpp 运行以下代码行时,Eclipse 都会抛出标题错误“'MSize' is not a member of cv::Mat':

cv::Mat::MSize size_of_a = sets[rep_a].locations.size;

位置的定义如下:

struct forest{
    cv::Mat_<int> locations;
    cv::Mat_<int> rotations;
    int representative;
    int id;
};

和集合是森林结构的矢量版本。当documentation clearly refutes this 时,我主要对为什么会发生这种情况感到困惑。

我相信我包含的头文件是正确的(PuzzleDisjointSet.h 包括上述森林结构定义以及集合定义。

#include "PuzzleDisjointSet.h"
#include <algorithm>
#include <opencv2/core.hpp>
#include <opencv/cv.h>
#include <opencv2/core/mat.hpp>

【问题讨论】:

  • 你能更新确切的错误信息吗?有时结构可能没有定义,因为发生了其他事情。
  • @Rome_Leader 我刚刚使用 Eclipse CDT 3.8.1 构建了该存储库,没有遇到该错误。您“相信您包含的头文件是正确的”。那么你不是简单地构建你在 repo 中找到的源代码并将其与 opencv 链接吗?
  • 我对 opencv 了解不多,但 this 文档中没有关于包含名为 MSize 的子结构的 Mat 的信息。您确定您使用正确的 OpenCV 进行编译?你检查头文件了吗?
  • @CássioRenan 确切的错误消息是:'MSize 不是 'cv::Mat' 的成员。感谢下面的另一个答案,我现在知道在最新的 OpenCV (3.0) 版本中对 cv::Mat 类进行了一些重构。看着它自动取款机。
  • @MikeKinghan 您使用的是哪个版本的 OpenCV?我使用的是 3.0,并且在我们发言时正在尝试回滚到 2.4.9。

标签: c++ eclipse opencv mat


【解决方案1】:

该结构在此提交中被删除 https://github.com/Itseez/opencv/commit/d8c8339bec83b77978d2a0e1a62b764fb9d9c599#diff-bc1d784738cd852f5b1e95ce10a56d06

也许您可以在此之前签出一个版本并使用它,或者我怀疑它可能已移至不同的班级,您可以尝试寻找该版本

【讨论】:

  • 啊,没错!我会回滚到 2.4.9 作为测试,如果错误仍然发生,我会报告回来。 2.4.4 在这一点上似乎已被完全弃用,但我怀疑它们可能仍然足够相似。谢谢!
  • 这个问题在 2.4.9 仍然存在。知道如何获取 OpenCV 2.4.4 的文件,因为这似乎是最后一个经过测试的 OpenCV 版本?
  • 您可以克隆 repo 并尝试在 2.4 之前的分支上构建它,但我建议您检查代码并使其在较新的版本上编译。或者可以通过邮件列表等方式向那里的一些开发人员寻求帮助。
【解决方案2】:

OpenCV 版本:4.3.0

cv::MatSize size_of_a = sets[rep_a].locations.size;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 2016-02-15
    • 1970-01-01
    • 2014-06-21
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多