2015-04-28 33 views
3

爲什麼沒有`randn`錯誤我不小心忘記了命名空間cv::當我使用randn並且它已被編譯沒有錯誤。這是我的代碼當我刪除`cv ::`

#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; 
} 

我運行的代碼在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 

我的問題是這個函數還定義了cv命名空間?

回答

6

您可以獲得參數相關查找(ADL,也稱爲Koenig查找)。本質上,該名稱在G參數類型的命名空間中查找,即cv::。 ADL主要幫助找到操作符,但也可以與普通的命名函數一起使用。

+0

對我而言有些新鮮感。謝謝。 – CroCo

相關問題