2017-01-18 4 views
0

opencv document about gpu::orbКак получить доступ к данным в gpuMat?

Я хочу, чтобы получить ключевые точки изображения с GPU :: ОРБ и типу ключевых точек является gpuMat.Then я попытался получить доступ к данным gpuMat как документов.

Я попытался с кодом ниже: (ключевыми точками являются gpumat)

cout<<keypoints.ptr<float>(3)[4]<<endl; 

, но я получил «ошибку сегментации (ядро сбрасывало)» Я знал, что мы не можем модифицировать данные в gpuMat. . Тогда как я могу получить данные в gpuMat?

ответ

2

В соответствии с OpenCV documentationcv::cuda::GpuMat является:

Базовый класс для хранения GPU памяти с подсчетом ссылок. Его интерфейс соответствует интерфейсу Mat со следующими ограничениями:

  • нет произвольной поддержки размеров (только 2D)
  • никаких функций, которые возвращают ссылки на свои данные (потому что ссылки на GPU не действительна для CPU)
  • нет выражения шаблонов метод поддержки

ptr возвратит указатель на память устройства. Вы не можете читать память устройства непосредственно с хоста. Для использования данных в хост-функциях, таких как operator <<, данные необходимо скопировать в память хоста с помощью GpuMat::download(cv::Mat& m).