2016-02-29 2 views
3

J'ai essayé Hough sur CPU, et ça marche bien, juste un peu lent. Donc, je suis en train de courir Hough sur OpenCV CUDA, mais il montre cette erreur, même si je GpuMat -Erreur OpenCV GPU (Fonction non implémentée) dans Hough Transform

OpenCV Error: The function/feature is not implemented (getGpuMat is available only for cuda::GpuMat and cuda::HostMem) in cv::_InputArray::getGpuMat, file PATH\opencv-sources\modules\core\src\matrix.cpp, line 1454

Ceci est mon code (streamer images de la caméra en direct, de sorte que l'intérieur d'une boucle while) -

Ptr<HoughLinesDetector> houghLines = createHoughLinesDetector(1, CV_PI/180, 120); 
vector<Vec2d> tmpLines; 
vector<Vec2d> lines; 
GpuMat imgCanny; 
... 
while(true) { 
    ... 
    houghLines->detect(imgCanny, tmpLines); 
    houghLines->downloadResults(tmpLines, lines); // Error occurs here... 
    ... 
} 

Une aide?

Répondre

4

Après beaucoup d'essais et d'erreurs, j'ai finalement trouvé la solution. En fait, la sortie en detect devrait être un GpuMat et non un vect2d. Je l'aurais compris plus tôt, mais la documentation de OpenCV est très confuse. Voici le code édité -

Ptr<HoughLinesDetector> houghLines = createHoughLinesDetector(1, CV_PI/180, 120); 
GpuMat tmpLines; // This should be GpuMat... 
vector<Vec2d> lines; 
GpuMat imgCanny; 
... 
while(true) { 
    ... 
    houghLines->detect(imgCanny, tmpLines); 
    houghLines->downloadResults(tmpLines, lines); 
    ... 
}