J'ai actuellement une image carrée que je souhaite utiliser comme entrée de My ResNet50 avec les dimensions 576x576 et j'essaie uniquement de disposer du carré central de cette image. En d'autres termes, découpez une bordure autour du centre de l'image. Existe-t-il une façon de le faire en seulement avoir à définir la largeur de la découpe (en pixels)? P>
3 Réponses :
Vous pouvez par exemple faire quelque chose comme ceci:
import numpy as np start_width = 576 center_width = 100 start_image = np.random.rand(start_width,start_width,3) # With open CV: # start_image = cv2.imread("your_file",mode='RGB') # start_width = start_image.shape[0] center_image_start_idx = int((start_width-center_width)/2) center_image = start_image[ center_image_start_idx:(center_image_start_idx+center_width), center_image_start_idx:(center_image_start_idx+center_width),:] print(start_image.shape) print(center_image.shape) # Which outputs: > (576, 576, 3) > (100, 100, 3)
Donc, je lis l'image avec: img_array = cv2.imread (img.imread (img.imread) code> et à l'aide de votre code comme:
centre_image [img_array] code> et obtenir le message d'erreur: < Code> IndexError: L'index 184 est hors limites pour l'axe 0 avec la taille 100 code>
@Omartekin J'ai écrit la solution avant que je ne connaisse que vous avez une image CV2, donc j'ai fait une solution générale. Mise à jour du code de telle sorte qu'il fonctionne aussi avec CV2 (voir les commentaires dans le code). Mais puisque vous utilisez CV2, vous devez probablement simplement utiliser les fonctions prises en charge CV2 telles que Mohammad_el_assal suggérées.
from PIL import Image img = Image.open("ImageName.jpg") # or any format you want area = (400, 400, 800, 800) cropped_img = img.crop(area) cropped_img.save("ImageName2.jpg", "JPEG") # or any format you want, even diifferent than the original format. cropped_img.show() this is a method to crop. define your own algorithim to solve your problem.
Supposons new_h code> et
new_w code> sont votre hauteur et votre largeur d'objectif.
org_h, org_w, _ = img.shape
crop_img = img[org_h//2 - new_h//2:org_h//2 + new_h, org_w//2 - new_w//2:org_w//2 + new_w,:]
Quels sont vos outils pour la lecture de l'image? Quelle est votre commande du canal d'image?
c h w code> ou
h w c code> ou quelque chose d'autre
J'utilise opencv (par exemple cv2.imread). L'ordre du canal est: H w c
La question n'a rien à voir avec
la machine-apprentissage code> - veuillez ne pas spamner non plus des balises non pertinentes (supprimées).