源代码中OpenCV的C ++ noArray()在哪里?

时间:2014-03-29 05:30:03

标签: c++ c opencv wrapper

只是一个简单的问题..我通过源头搜索并发现了如此多的点击量,这是不可能的。尝试将grep的输出保存到文件,即

grep -r "noArray" . >> search

然后在"搜索"文件中搜索typedef和enum ...但是没有任何内容出现,,,我只想找到它所以我可以用C包装它。任何帮助都是理解

1 个答案:

答案 0 :(得分:3)

使用OpenCV 2.4.8,该函数在modules\core\include\opencv2\core\core.hpp:1453

中声明
CV_EXPORTS OutputArray noArray();

它在modules\core\src\matrix.cpp:1731中定义:

static _OutputArray _none;
OutputArray noArray() { return _none; }

修改

_none是使用默认构造函数初始化的_OutputArray类型的静态对象,该构造函数为空(请参阅modules\core\src\matrix.cpp:1332)。因此,当_OutputArray派生自_InputArray时,也会调用_InputArray的默认构造函数。第二个构造函数在modules\core\src\matrix.cpp:921中定义如下:

_InputArray::_InputArray() : flags(0), obj(0) {}

其中flagsobj是相应类型intvoid*的成员变量。因此_none 不是一个NULL指针,但它包含一个。