Ошибка графического процессора OpenCV (функция не реализована) в преобразовании Хафа

Я попробовал Hough на процессоре, и он работает нормально, только немного медленно. Итак, я пытаюсь запустить Hough на OpenCV CUDA, но он показывает эту ошибку, даже если у меня есть GpuMat -

Ошибка OpenCV: функция/функция не реализована (getGpuMat доступна только для cuda::GpuMat и cuda::HostMem) в cv::_InputArray::getGpuMat, файл PATH\opencv-sources\modules\core\src\matrix. cpp, строка 1454

Это мой код (я транслирую кадры с камеры в реальном времени, поэтому внутри цикла 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...
    ...
}

Любая помощь в этом?


person FadedCoder    schedule 29.02.2016    source источник


Ответы (1)


После множества проб и ошибок я наконец нашел решение. На самом деле вывод в detect должен быть GpuMat, а не vect2d. Я бы понял это раньше, но документация OpenCV очень запутанная. Вот отредактированный код -

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);
    ...
}
person FadedCoder    schedule 29.02.2016