Ocurren varios casos en los que necesita calcular en qué porcentaje se superponen dos cuadros en una imagen. ¿Te ha ocurrido una situación similar? Lea el artículo a continuación para saber cómo puede lidiar con ese problema. Lo que hacemos exactamente es obtener las dimensiones de dos cajas del usuario. Luego, calcula la intersección de dos cajas y la unión de dos cajas. Finalmente, divida la intersección por la unión y multiplíquela por 100 para calcular el porcentaje del cuadro delimitador.
Implementación paso a paso:
Paso 1: Importación de las bibliotecas
En primer lugar, importamos la biblioteca Polygon. El paquete Polygon maneja formas poligonales en 2D
from shapely.geometry import Polygon
Paso 2: Obtener las dimensiones de las cajas
Ahora, tomamos las dimensiones de los dos polígonos del usuario para los que desea calcular el porcentaje del cuadro delimitador.
box_shape_1 = [#Dimensions of Box-1] box_shape_2 = [#Dimensions of Box-2]
Paso 3: Dibujar polígono a partir de dimensiones
En este paso, dibujaremos los polígonos usando la función Polygon() que es una función de dibujo introducida en el módulo wand.drawing para dibujar formas complejas.
polygon_1 = Polygon(box_shape_1) polygon_2 = Polygon(box_shape_2)
Paso 4: Calcule la intersección de los cuadros delimitadores
Además, dividir la intersección de dos polígonos con la unión de dos polígonos. La intersección de dos polígonos se calcula usando la función de intersection(), mientras que la unión de dos polígonos se calcula usando la función union() respectivamente.
intersección = polígono_1.intersección(polígono_2).área / polígono_1.unión(polígono_2).área
Paso 5: Imprime el porcentaje de intersección
Finalmente, multiplique el resultado obtenido en el último paso por 100 para calcular el porcentaje y luego imprimir el resultado. Además, no olvide redondear el resultado por 2 dígitos.
print(round(intersect*100,2),'%')
Ejemplo 1:
En este ejemplo, hemos usado el polígono con 3 lados, es decir, un triángulo, y luego calculamos el porcentaje de cuadro delimitador de esos polígonos.
Python3
# Python program to calculate # percentage of bounding # box overlap, for Image # Detector Evaluation # Import the library Polygon from shapely.geometry import Polygon # Give dimensions of shape 1 box_shape_1 = [[4, 2], [6, 4], [4, 6]] # Give dimensions of shape 2 box_shape_2 = [[5, 3], [1, 4], [5, 5]] # Draw polygon 1 from shape 1 # dimensions polygon_1 = Polygon(box_shape_1) # Draw polygon 2 from shape 2 # dimensions polygon_2 = Polygon(box_shape_2) # Calculate the intersection of # bounding boxes intersect = polygon_1.intersection( polygon_2).area / polygon_1.union(polygon_2).area # Print the intersection percentage print(round(intersect*100, 2), '%')
Producción:
28.0 %
Ejemplo 2:
En este ejemplo, hemos usado el polígono con 4 lados, es decir, un triángulo, y luego calculamos el porcentaje de cuadro delimitador de esos polígonos.
Python3
# Python program to calculate # percentage of bounding # box overlap, for Image # Detector Evaluation # Import the library Polygon from shapely.geometry import Polygon # Give dimensions of shape 1 box_shape_1 = [[511, 41], [577, 41], [577, 76], [511, 76]] # Give dimensions of shape 2 box_shape_2 = [[530, 59], [610, 59], [610, 94], [530, 94]] # Draw polygon 1 from shape 1 # dimensions polygon_1 = Polygon(box_shape_1) # Draw polygon 2 from shape 2 # dimensions polygon_2 = Polygon(box_shape_2) # Calculate the intersection of # bounding boxes intersect = polygon_1.intersection( polygon_2).area / polygon_1.union(polygon_2).area # Print the intersection percentage print(round(intersect*100, 2), '%')
Producción:
18.53 %