2015-04-25 2 views
3

В API OpenCV в C++, можно сделать поэлементно логические операции (и, или, XOR, нет), используя синтаксис вроде этого:Логические операции в OpenCV из Java

Mat a, b; 
Mat c = a & b; 

и аналогично с другими. Я знаю, что в Java нет перегрузки операторов; Я ищу, как Java API предоставляет ту же функциональность, которая была выставлена ​​на C++ в этой форме. Я уже нашел функции Core.bitwise_*, но они на бит, а не на матричный элемент.

+2

нет реальных битов в OpenCV, один элемент (байт) является наименьшим элемент (для бинарный мат - 0 или 255). поэтому эти функции эквивалентны версии C++. – berak

+0

... посмотрю. Я думаю, что я представлял себе существование какого-то мифического «ведет себя как не-побитовое ИЛИ, по-разному в массивах», и думал, что перегрузка операторов в C++ API делает именно это, а на самом деле это тоже побитовое. Спасибо, что указали это (не хотите ли вы написать это как ответ?) – Latanius

ответ

2

Это перегрузка оператора. В java-перегрузка оператора не поддерживается. Но если вам требуется что-то подобное, вы можете ввести метод для этого.

Например -

Mat a, b; 
Mat c; 
c = Mat.doOperation(a, b); 

Где doOperation() является статическим методом в Mat -

public static doOperation(Mat a, Mat b){ 
    //do whatever you want 
} 
+1

спасибо! Я вижу, что так можно добавить такую ​​операцию, однако, то, что мне нужно, - это то, что она уже реализована, то есть, как получить доступ к существующим функциям в OpenCV. (Я редактировал вопрос, чтобы сделать намерение менее двусмысленным.) – Latanius

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