web-dev-qa-db-fra.com

Quelle est la différence entre UMat et Mat dans OpenCV?

J'ai parcouru la documentation et je n'ai pas reçu de description claire et détaillée sur UMat; Cependant, je pense qu'il a quelque chose à voir avec le GPU et le CPU. Sil te plait aide moi. Je vous remercie.

23
Aniket Sharma

Peut-être que la section 3 de ce document vous aidera: [lien maintenant rompu] https://software.intel.com/sites/default/files/managed/2f/19/inde_opencv_3.0_Arch_guide.pdf

Plus précisément, la section 3.1:

Une abstraction unifiée cv :: UMat qui permet aux mêmes API d'être implémentées à l'aide du code CPU ou OpenCL, sans qu'il soit nécessaire d'appeler explicitement la version accélérée OpenCL. Ces fonctions utilisent un GPU compatible OpenCL s'il existe dans le système et passent automatiquement en mode CPU dans le cas contraire.

et section 3.3:

Généralement, cv :: UMat est la classe C++, qui est très similaire à cv :: Mat. Mais les données UMat réelles peuvent être situées dans une mémoire système normale, une mémoire vidéo dédiée ou une mémoire partagée.

Lien vers l'utilisation suggérée dans les commentaires par @ BourbonCreams :
https://docs.opencv.org/3.0-rc1/db/dfa/tutorial_transition_guide.html#tutorial_transition_hints_opencl

40
beaker