2017-02-23 4 views
4

私はOpenCVに実装されたhog.cppを覚えていましたが、マクロ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_RUNOpenCLコードです。
  2. コンピュータでOpenCL機能(GPUなしまたはOpenCLドライバなし)を使用できない場合は、通常のコード(CPU)が実行されます。通常のコード間で切り替えることも、コード内でOpenCLのバージョンを使用することもできます。 setUseOptimized()またはsetUseOpenCL()がfalseに設定されている場合、通常のコードが使用されます。

openclディレクトリには、GPUデバイスで実行されるカーネルコードがあります。

PS:OpenCLは、GPUだけではありません。

+0

ありがとう、私はOpenCL – foo

関連する問題