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