Saltar al contenido

¿Para qué sirve 0xFF en cv2.waitKey(1)?

Nuestro grupo redactor ha estado mucho tiempo buscando para dar resolución a tus preguntas, te dejamos la respuestas de modo que nuestro deseo es resultarte de gran ayuda.

Solución:

También es importante tener en cuenta que ord(‘q’) puede devolver números diferentes si tiene NumLock activado (tal vez también esté sucediendo con otros keys). Por ejemplo, al presionar c, el código:

key = cv2.waitKey(10) 
print(key) 

devoluciones

 1048675 when NumLock is activated 
 99 otherwise

Convirtiendo estos 2 números a binario podemos ver:

1048675 = 100000000000001100011
99 = 1100011

Como podemos ver, el último byte es idéntico. Entonces es necesario tomar solo este último byte ya que el resto se debe al estado de NumLock. Así, realizamos:

key = cv2.waitKey(33) & 0b11111111  
# 0b11111111 is equivalent to 0xFF

y el valor de key seguirá siendo el mismo y ahora podemos compararlo con cualquier key nos gustaría como su pregunta

if key == ord('q'):

0xFF es una constante hexadecimal que es 11111111 en binario. Usando AND bit a bit (&) con esta constante, deja solo los últimos 8 bits del original (en este caso, lo que sea cv2.waitKey(0) es).

cv2.waitKey() devuelve un valor entero de 32 bits (puede depender de la plataforma). los key la entrada está en ASCII, que es un valor entero de 8 bits. Entonces, solo le importan estos 8 bits y quiere que todos los demás bits sean 0. Esto lo puede lograr con:

cv2.waitKey(0) & 0xFF

Si conservas algún recelo y disposición de desarrollar nuestro post eres capaz de dejar una glosa y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *