2012-07-15 18 views

Respuesta

13

No sé si es la manera más rápida, pero es una forma de hacerlo.

Crea una imagen de máscara con la región de la cara en blanco, luego aplica la función bit a bit_y con la imagen original y la imagen de la máscara.

x = y = 30 
w = h = 100 

mask = np.zeros(img.shape[:2],np.uint8) 
mask[y:y+h,x:x+w] = 255 
res = cv2.bitwise_and(img,img,mask = mask) 

Toma 0.16 ms en mi sistema (núcleo i5,4GB RAM) para una imagen de tamaño 400x300

EDITAR - MEJOR MÉTODO: No necesita hacer que el anterior. Simplemente cree una imagen cero y luego copie el ROI de la imagen original a cero. eso es todo.

mask = np.zeros(img.shape,np.uint8) 
mask[y:y+h,x:x+w] = img[y:y+h,x:x+w] 

Se tarda sólo 0.032 ms en mi sistema de los parámetros anteriores, 5 times faster a la de arriba.

Resultados:

entrada de imagen:

enter image description here

Salida:

enter image description here

Cuestiones relacionadas