2016-03-03 4 views
3

В настоящее время я переношу программу в OpenCV 2.4.9 на OpenCV 3.1.0, однако у меня возникли проблемы с изменением с Mat s на UMat. Я использую Mat s для хранения изображений, которые мне нужны для доступа к единым двоичным значениям пикселей. В 2.4.9 Я сделал это так:OpenCV 3.1.0: Доступ к отдельным элементам из UMat

Mat test_mat; 
test_mat.at<uchar>(row,column); 

К сожалению, я не смог найти способ, чтобы сделать нечто подобное с UMat сек OpenCV 3.1.0 обеспечивает через моего исследования. У кого-нибудь есть идеи? Извините, если это действительно тривиальная вещь.

+0

Если кто-то задается вопросом, почему я это делаю, мне нужно ускорение обработки, которое 3.1.0 обеспечивает более 2.4.9 –

+0

Если мой ответ сработал для вас, [отметьте его как принятый] (http: //meta.stackexchange .com/вопросы/5234/как-же-акцепторные-ан-ответ-работы). Если это не так, добавьте комментарий, требующий уточнений или исправлений, если это необходимо (я думаю, вы можете только прокомментировать свой вопрос в соответствии с вашей текущей репутацией, но не беспокойтесь, я прочитаю его). – Nacho

ответ

2

Попробуйте следующее:

UMat test_umat; 
test_umat.getMat(ACCESS_READ).at<uchar>(row, column); 

Различные флаги доступа являются:

  • ACCESS_READ
  • ACCESS_WRITE
  • ACCESS_RW
  • ACCESS_FAST
+1

Эта команда запускает cv :: Mat(), которая теряет производительность UMat. Итак, вопрос должен быть, есть ли аналогичная функция .at() в классе UMat? Это будет очень полезно для меня. – uelordi

+0

Вы правы, opencv Внутренне использует .getMat (Access) для доступа к определенным элементам из функций. – uelordi

Смежные вопросы