Я получил следующий код (пример) для создания маски, которая использует cv: Mat:
int v;
cv::Mat m1; // being a submat
cv::Mat mask = (m1==v);
Эти строки получены из прототипа Python
mask = np.where( m1[x1:x2,y1:y2]==v, 255, 0 );
В версии c ++ я хотел бы использовать UMat вместо Mat, потому что вокруг этой одной строки имеется больший конвейер обработки. К сожалению, мне кажется, что MatExpressions (например, m1==v
выше) не реализованы для cv :: UMat в OpenCV3.4.1. Это правильно?
Есть ли в cv :: UMat операции, с помощью которых я мог бы эффективно имитировать mask=(m1==v)
для получения той же маски?
Мой текущий код (преобразование из UMat в Mat, то есть копирование из графической памяти в главную память и затем выполнение операции cv :: Mat) неэффективен.
с использованием c ++ 11, gcc5.4.0, opencv3.4.1
NB. Вопрос не в возможных разных значениях в маске между Python и версией c ++.