В чем разница между UMat и Mat в OpenCV?

Я просмотрел документацию и не получил четкого подробного описания UMat; однако я думаю, что у него есть что-то связанное с GPU и CPU. Пожалуйста, помоги мне. Спасибо.

1 ответов


возможно, раздел 3 этого документа поможет: [ссылка теперь сломана] https://software.intel.com/sites/default/files/managed/2f/19/inde_opencv_3.0_arch_guide.pdf

в частности, в разделе 3.1:

унифицированная абстракция cv:: UMat, которая позволяет реализовать те же API с использованием кода CPU или OpenCL без требования явного вызова ускоренной версии OpenCL. Эти функции используют GPU с поддержкой OpenCL, если он существует в системе, и автоматически переключиться на работу процессора в противном случае.

и раздел 3.3:

Как правило, cv::UMat-это класс C++, который очень похож на cv:: Mat. Но фактические данные UMat могут быть расположены в обычной системной памяти, выделенной видеопамяти или общей памяти.

ссылка на использование, предложенное в комментариях @BourbonCreams:
https://docs.opencv.org/3.0-rc1/db/dfa/tutorial_transition_guide.html#tutorial_transition_hints_opencl