【问题标题】:Structure of Mat in opencv?opencv中Mat的结构?
【发布时间】:2013-02-18 12:05:23
【问题描述】:

我尝试了 Structure of Mat,我的应用显示为“运行失败”。还有其他方法吗?

以下是我尝试过的代码,但它失败了。如何进行这种锻炼或有其他方法?

“Common.h”

struct initialize {
      cv :: Mat G_Sm;
};

“初始化.cpp”

struct initialize* initfunction ( ) {
    struct initialize* initializemat = ( initialize* ) malloc(sizeof(*initializemat));
    initializemat -> G_Sm = Mat:: zeros ( 3,1, CV_8U );
    return (initializemat);
}

“main.cpp”

int main () { 
   struct initialize* initializem = initfunction ();
   cout << initializem -> G_Sm << endl;

 return 0;
}

如果我使用“int”而不是 Mat,程序不会崩溃。如果它是结构中的“Mat”变量,程序就会崩溃。

【问题讨论】:

  • Mat是指针类型吗?
  • 您在未初始化的cv::Mat 上使用cout
  • @sgar91 即使我注释掉 cout 它的结果也是一样的。
  • @DanielFischer Mat 不是指针
  • @sgar91 未定义的行为未定义。它可能看起来像你想要的那样,但它仍然不是一个有效的程序。

标签: c++ c opencv mat


【解决方案1】:

使用 C++ 代替 C:

initialize* initfunction ( ) {
    initialize* initializemat = new initialize;
    return initializemat;
}

您不应该使用 malloc 分配 C++ 对象。
malloc 不会为您调用任何构造函数,而使 G_Sm 未初始化。

【讨论】:

  • 或者只是在堆栈上构建它。
  • @juanchopanza 当然可以,但我想保持界面完整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
相关资源
最近更新 更多