Ich verwende den folgenden Code für Feature-Erkennung:Wie wird die OpenCL-Version von SURF verwendet?
auto detector = cv::xfeatures2d::SURF::create();
std::vector<cv::KeyPoint> keypoints;
for (const cv::Mat& image : images) {
detector->detect(image, keypoints);
process(keypoints);
}
Jetzt versuche ich OpenCL Version von SURF zu verwenden. Ich habe meinen Code geändert, um mit cv::UMat
zu arbeiten. Leider ändert sich die Ausführungszeit nicht. HAS_OPENCL
ist gesetzt, cv::ocl::useOpenCL()
ist wahr. Was könnte schiefgehen?
tat finden Sie http://docs.opencv.org/2.4/modules/nonfree/doc/feature_detection.html#ocl-surf-ocl und http://code.opencv.org/attachments/1560/surf.ocl.cpp? ? – Micka
@Micka Dies bezieht sich leider auf OpenCL 2.4, nicht 3.0. 'SURF_OCL' existiert dort nicht einmal. – Anton3
Haben Sie versucht, 'cv :: ocl :: setUseOpenCL (true);' explizit aufzurufen? Aber http://answers.opencv.org/question/63452/opencv-30-the-performance-ofumat/ sagt, dass es viele Funktionen geben könnte, die in die neue API konvertiert wurden, also wahrscheinlich die/viele nicht-freie Funktionen gehören ihnen. – Micka