2017-02-23 46 views
4

我正在學習hog.cpp實現的OpenCV,遇到宏CV_OCL_RUN並且與它混淆。什麼是在OpenCV中使用的宏CV_OCL_RUN?

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