Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: mariodos en Febrero 09, 2017, 01:23:43 AM

Título: Open cv Python duda
Publicado por: mariodos en Febrero 09, 2017, 01:23:43 AM
Quiero probar algo.. pero la verdad nunca en mi vida trabaje con imagenes asi que estoy en proceso de investigacion de las librerias y demas conocimientos que debo adquirir para trabajar.

y mi duda esta en el este codigo simple de python que no se que es.

Código (python) [Seleccionar]


import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF ==ord('s'):
        break

cap.release()
cv2.destroyAllWindows()



Comprendo todo menos la linea donde esta el if exactamente ese & 0xFF no se que es y me gustaria que me iluminaran.
Gracias de ante mano.

Título: Re:Open cv python duda
Publicado por: novak en Febrero 09, 2017, 06:03:46 AM
Aun tengo que ponerme en Python y que me corrijan si me equivoco, pero 0x indica que es una notacion hexadecimal y ff es 255 en decimal o 11111111 en binario.

Saludos.
Título: Re:Open cv python duda
Publicado por: grep en Febrero 09, 2017, 10:19:13 AM
Código (python) [Seleccionar]

    if cv2.waitKey(1) & 0xFF ==ord('s'):
        break


Se asegura que se dejará de mostrar los frames capturados (se saldrá del while infinito) al presionar la tecla s minúscula.

waitKey(1) mostrará la imagen del frame por, al menos, 1ms. En este momento en que se muestra la imagen, waitKey puede cerrar la ventana de forma automática después de pasado 1ms o cuando el usuario presione una tecla. Si la ventana se cierra de forma automática waitKey retorna -1, pero si el usuario ha presionado una tecla , entonces waitKey cierra la ventana y retorna el código de la tecla presionada.

cv2.waitKey(1) & 0xFF trunca el valor numérico devuelto por waitKey (retorna los 8 bits menos significativos) si este no puede ser representable en 8-bit. Si el valor devuelto por waitKey es representable en 8-bit, entonces esta operación devuelve el mismo valor.

ord('s') retorna 115, el código ASCII en decimal de la letra s minúscula, un valor representable en 8-bit como todo código de la tabla ASCII.

Fuente:
http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html#waitkey

Saludos