源代码中 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)
其中flags
和obj
是各自类型int
和void*
的成员变量。因此_none
不是空指针,但它包含一个。
【讨论】:
返回值_none代表什么,你知道吗?是空指针吗? @user3411335_none
不是 NULL 指针,但它包含一个。查看我的编辑。以上是关于源代码中 OpenCV 的 C++ noArray() 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章