Tengo una imagen de una cara y he usado cascadas para detectar las ubicaciones (x, y, ancho, alto) de la boca, la nariz y cada ojo. Me gustaría establecer todos los píxeles fuera de estas regiones a cero. ¿Cuál sería la forma más rápida (computacional) de hacer esto? Eventualmente lo haré con fotogramas de video en tiempo real.OpenCV vía python: ¿Hay una forma rápida de cero píxeles fuera de un conjunto de rectángulos?
8
A
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:
Salida:
Cuestiones relacionadas
- 1. ¿Forma más rápida de revisar rectángulos intersecados?
- 2. Óptimo conjunto de rectángulos sucios
- 3. OpenCV (vía python) en Linux: ¿Establecer ancho/alto de cuadro?
- 4. ¿La forma más rápida de poner a cero valores bajos en el conjunto?
- 5. Encontrar la ubicación de rectángulos en una imagen con OpenCV
- 6. Ciclo a través de píxeles con opencv
- 7. Invertir un conjunto de rectángulos en un plano 2D
- 8. ¿Hay alguna manera rápida de crear un conjunto?
- 9. Eliminación de píxeles ruidosos usando opencv
- 10. ¿Hay una forma más rápida de recorrer miles de elementos?
- 11. Buscar rectángulos sin esquinas usando opencv
- 12. La forma más rápida para dibujar píxeles en FireMonkey
- 13. Rectángulos de puntos usando Python
- 14. Negando un conjunto de palabras vía java regex
- 15. ¿Hay una forma rápida de desvincular claves en Emacs?
- 16. Forma elegante de colocar dos rectángulos
- 17. ¿Hay una forma más rápida de cargar mysqldumps?
- 18. La forma más rápida de buscar una lista en python
- 19. ¿Hay alguna forma de recuperar un conjunto o conjunto de claves para un NSManagedObject determinado?
- 20. ¿cuál sería una forma rápida de leer un archivo de propiedad en python?
- 21. La forma más rápida de unificar una lista en Python
- 22. OpenGL: representación fuera de pantalla rápida
- 23. ¿La forma más rápida de poner a cero una matriz de 2d en C?
- 24. ¿La forma más rápida de obtener el primer objeto de un conjunto de consulta en django?
- 25. ¿Hay una manera rápida y fácil en OpenCV para calcular el gradiente de una imagen?
- 26. ¿Cuál es la mejor manera de combinar un conjunto de rectángulos en una imagen?
- 27. ¿Tratar con píxeles en contornos (OpenCV)?
- 28. ¿La forma más rápida de comparar valores de píxeles entre dos imágenes almacenadas?
- 29. Asignación de color de Opencv con acceso directo de píxeles
- 30. C# - La forma más rápida de encontrar un conjunto de cadenas en otra cadena