2017-02-23 47 views
4

Я учился hog.cpp, реализованный в OpenCV, когда встретил макрос CV_OCL_RUN и смутил его.Что такое макрос CV_OCL_RUN, используемый в OpenCV?

В hog.cpp где detectMultiScale() находит, вы можете найти CV_OCL_RUN и метод, называемый ocl_detectMultiScale() в нем. По сравнению с detectMultiScale() и ocl_detectMultiScale() не только их имена, но и их реализация весьма схожи.

Вот мои вопросы:

  1. Что макрос CV_OCL_RUN используется? Это для тестирования или для других целей?
  2. С detectMultiScale() и ocl_detectMultiScale() настолько похожи по функциональности, почему более поздняя версия встроена в первую? Какими способами они называются?

Заранее благодарен!

ответ

2
  1. CV_OCL_RUN предназначенный для OpenCL код.
  2. Если ваш компьютер не может использовать возможности OpenCL (без GPU или без OpenCL-драйвера), запускается обычный код (CPU). Вы также можете переключаться между обычным кодом или использовать версию OpenCL в коде. Если для параметра setUseOptimized() или setUseOpenCL() установлено значение false, будет использоваться обычный код.

В каталоге opencl вы можете найти код ядра, который будет запущен на устройстве GPU.

PS: OpenCL не только для GPU.

+0

Спасибо, я найду ссылку на OpenCL – foo