当我删除`cv ::`时,为什么`randn`没有错误

Cro*_*oCo 3 c++ opencv

我cv::在使用时意外忘记了命名空间,randn并且编译时没有错误.这是我的代码

#include <iostream>
#include <opencv2/core/core.hpp>

int main( int argc, char** argv )
{
    std::cout << "\n%%( Random Generator )%%\n"; 
    cv::Mat G = cv::Mat::ones(4,4, CV_64FC1);
    cv::Mat m = cv::Mat::zeros(1,1, CV_64FC1);
    cv::Mat s = cv::Mat::ones(1,1, CV_64FC1);
    std::cout << G << std::endl;
    randn(G, m, s);
   std::cout << G << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Windows中运行代码

cl /EHsc main.cpp /Fetest.exe /I D:\xxxx\opencv_2.4.10\build\include /link /LIBPATH:D:\xxxx\opencv_2.4.10\build\x86\vc12\lib opencv_core2410.lib
Run Code Online (Sandbox Code Playgroud)

我的问题是这个函数是否也是在cv命名空间中定义的?

Che*_*Alf 6

您获得参数依赖查找(ADL,也称为Koenig查找).本质上,名称在G参数类型的命名空间中查找,即cv::.ADL主要用于查找运算符,但也适用于普通的命名函数.