2015-04-10 4 views
-2

Я столкнулся с следующим при попытке конвертировать некоторый код на C++, который использует OpenCV для Java. Я хотел бы знать, что делает оператор ~ объекту Mat gradient_grown в следующем коде и что эквивалентно Java?Что такое ~ оператор в opencv, C++?

Mat edge_enhanced_mser  = ~gradient_grown & mser_mask; 
+0

Похоже 'NOT' оператора – gtgaxiola

+6

Почему бы вам не Google что-то вроде этого? – MadConan

+0

@immibis Вы можете мне помочь? –

ответ

2

Это эквивалент bitwise NOT оператора перегруженной для Mat класса. В этом случае он инвертирует все биты в матрице. Он указан в разделе Матрица выражений в documentation:

Битовые логические операции: A logicop B, A logicop s, s logicop A, ~ A, где logicop является одним из: &, |, ^.

В Java, вы можете использовать bitwise_not() method:

bitwise_not

государственной статической силы bitwise_not (Mat ЦСИ, Mat ДСТ)

инвертирует каждый бит массива.

Примечание вам нужен новый Mat для хранения результата:

bitwise_not(gradient_grown, gradient_grown_complement); 
+0

Даже на OpenCV 'Mat' (что бы это ни было)? – immibis

+0

Если он не был перегружен для типа класса, как он есть здесь. –

+0

Спасибо, я только что нашел аналогичный вопрос с тем же ответом здесь http://stackoverflow.com/questions/27854370/meaning-of-tilde-operator-in-opencv –