Actualmente estoy convirtiendo algunos códigos OpenCV de C++ a Java. No puedo usar JavaCV, ya que necesitamos la conversión en Java nativo, no en JNA. En un momento en el código, me sale el siguiente asignación:¿Cómo funciona el operador unario negativo en booleanos en C++?
dst[x] = (uchar)(-(kHit >= kForeground));
Dónde dst
es uchar*
, kHit
y kForeground
son int
s.
No he podido encontrar nada sobre cómo funciona esto, y Java no lo reconocerá como una operación. Hay una operación en estas dos variables en otro punto del código, y almacena uno de dos valores: 255 o 0.
El código en cuestión proviene de opencv/video/src/bgfg_gaussmix.cpp
.
Esto tiene sentido, y es algo que podría haber probado y descubierto muy fácilmente por mi cuenta. Gracias por señalarlo de manera concisa. – Wraith967
Técnicamente, la expresión booleana produce 'true' o' false', que cuando se promociona a 'int' obtendrá los valores' 1' o '0'. –