GOOGLE ADS

lunes, 2 de mayo de 2022

¿Cómo recortar y almacenar regiones de imagen de cuadro delimitador en Python?

ingrese la descripción de la imagen aquí

Mi idea es usar las múltiples coordenadas del cuadro delimitador de las regiones anormales para una imagen dada y recortar estas regiones para guardarlas en una carpeta separada. He escrito el código como se muestra a continuación, para recortar estas múltiples coordenadas del cuadro delimitador para una sola imagen, sin embargo, también obtengo el cuadro delimitador del que tengo que deshacerme.

import pandas as pd
import cv2
import numpy as np
df = pd.read_csv('excel1.csv')
image = cv2.imread('image2.png')
im_name = 'image2.png'
for i in range(len(df)):
name = df.loc[i]['filename']
if name == im_name:
start_point = (df.loc[i]['x'],df.loc[i]['y'])
end_point = (df.loc[i]['x']+df.loc[i]['width'],df.loc[i]['y']+df.loc[i]['height'])
color = (128, 0, 0)
thickness = 2
image = cv2.rectangle(image, start_point, end_point, color, thickness)
crop = image[df.loc[i]['y']:df.loc[i]['y']+df.loc[i]['height'],
df.loc[i]['x']:df.loc[i]['x']+df.loc[i]['width']]
cv2.imwrite("cropped/crop_{0}.png".format(i), crop)
cv2.imwrite('bb.png', image)


Solución del problema

Use numpy slicing en el ciclo y luego Python/OpenCV imwrite() que recorta también dentro del ciclo con un nombre diferente para cada iteración del ciclo

crop = image[ystart:ystop, xstart:xstop]
cv2.imwrite("crop_{0}.png".format(i), crop)


También puede agregar una ruta diferente para cada imagen que desee escribir si desea que vayan a carpetas diferentes.

Para cortes numpy, consulte https://www.w3schools.com/python/numpy_array_slicing.asp

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...