Encuentre el número de celdas de la cuadrícula que contienen puntos x, y.
Entonces, he escrito el siguiente código:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(-960,960,15)
y = np.random.randint(-540,540,15)
fig, ax = plt.subplots(figsize=(20, 11))
ax.scatter(x, y, marker='o', color='red', alpha=0.8)
img = plt.imread(scene_folder)
plt.imshow(img, extent = [-960, 960, -540, 540], aspect='auto')
plt.grid(color='white', linestyle='--', linewidth=1)
plt.show()
plt.close()
Este código genera esta imagen:
Hasta aquí todo bien. Lo que quiero lograr a continuación es verificar qué cuadrículas contienen puntos (puntos rojos) y obtener una imagen como esta (las cuadrículas que contienen puntos rojos ahora son blancas):
Luego, quiero obtener el número de cuadrículas que están blancas (o de cualquier otro color) y dividirlo por el número total de cuadrículas en esa imagen. La imagen de arriba tiene 48 cuadrículas, 13 de las cuales son blancas (13/48=27,1%).
¿Alguna idea sobre cómo abordar esto? Gracias de antemano.
davy.ai
Para lograr este objetivo, puedes crear una cuadrícula usando el método
meshgrid()
de numpy y luego utilizar la indexación booleana para comprobar qué cuadrículas contienen puntos. Aquí está el código que puedes agregar a tu código existente:Este código crea una cuadrícula con una resolución de 20×20 píxeles (97×55 cuadrículas en total), luego recorre todos los puntos y marca también las cuadrículas vecinas (para asegurarse de que el punto se capture correctamente). El array
contains_points
tendrá el valorTrue
para todas las cuadrículas que contengan puntos yFalse
de lo contrario.El código luego muestra el array
contains_points
como una imagen usando un mapa de colores en escala de grises (para que el blanco sea 1 y el negro sea 0), sobre la imagen original. Finalmente, calcula el porcentaje de cuadrículas blancas e imprime el resultado en la consola.