Saltar al contenido

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

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 otras teclas). 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 binarios 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 la clave seguirá siendo el mismo y ahora podemos compararlo con cualquier clave que nos gustaría, como su pregunta

if key == ord('q'):

0xFF es una constante hexadecimal que es 11111111 en binario. Mediante el uso de bit a bit AND (&) 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). La entrada clave está en ASCII, que es un valor entero de 8 bits. Por lo tanto, solo le importan estos 8 bits y desea que todos los demás bits sean 0. Esto puede lograrlo con:

cv2.waitKey(0) & 0xFF
¡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 *