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

Posted

技术标签:

【中文标题】源代码中 OpenCV 的 C++ noArray() 在哪里?【英文标题】:Where is OpenCV's C++ noArray() in the Source Code? 【发布时间】:2014-03-29 05:30:02 【问题描述】:

只是一个简单的问题..我通过源代码找到了很多点击,无法查看。尝试将 grep 的输出保存到文件中,即

grep -r "noArray" . >> search

然后在“搜索”文件中搜索 typedef 和 enum ......但什么都没找到

【问题讨论】:

【参考方案1】:

在 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 不是空指针,但它包含一个。

【讨论】:

返回值_none代表什么,你知道吗?是空指针吗? @user3411335 _none 不是 NULL 指针,但它包含一个。查看我的编辑。

以上是关于源代码中 OpenCV 的 C++ noArray() 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV-计算平均值cv::mean

opencv matchTemplate函数用法

从openCV函数C ++ NDK访问返回值

opencv —— minMaxLoc 寻找图像全局最大最小值

OpenCV-模板匹配cv::matchTemplate

OpenCV函数subtract()使用心得及需要注意的地方