Attualmente sto convertendo un codice OpenCV da C++ a Java. Non posso usare JavaCV, poiché abbiamo bisogno della conversione in Java nativo, non in un JNA. A un certo punto nel codice, ottengo la seguente assegnazione:Come funziona l'operatore unario negativo sui booleani in C++?
dst[x] = (uchar)(-(kHit >= kForeground));
Dove dst
è uchar*
, kHit
e kForeground
sono int
s.
Non riesco a trovare nulla su come funziona, e Java non lo riconoscerà come un'operazione. Esiste un'operazione su queste due variabili in un altro punto del codice e memorizza uno di due valori: 255 o 0.
Il codice in questione viene da opencv/video/src/bgfg_gaussmix.cpp
.
Questo ha senso, ed è qualcosa che avrei potuto facilmente provare e scoprire da solo. Grazie per averlo indicato in modo così conciso. – Wraith967
Tecnicamente l'espressione booleana produce 'true' o' false', che quando viene promosso ad un 'int' otterrà i valori' 1' o '0'. –