argmax renvoie l'indice du max mais en 1D (comme si l'image était un tableau 1D), bien qu'à lire la doc je pensait récupérer directement un indice 2D. Du coup unravel_index permet de calculer l'indice 2D correspondant (en lui donnant la taille du tableau, im.shape).
J'ai finit par faire une petite fonction qui fait tout et renvoie l'imagette de l'objet (0.68s pour une image contre 14.7 auparavant avec le script et l'image que tu as donné ci-dessus, 1.5s en travaillant sur l'image entière au lieu d'une imagette 100x100):
defget_thumb(im,limit):# get the 2D indices of the maxcenterX,centerY=np.unravel_index(im.argmax(),im.shape)# work on a subimage to speed up thingswindow_size=100subim=im[centerX-window_size:centerX+window_size,centerY-window_size:centerY+window_size]# thresholdmask=subim>(0.25*subim.max())# get the bouding boxlabel_im,nb_labels=scipy.ndimage.label(mask)slice_x,slice_y=scipy.ndimage.find_objects(label_im==1)[0]returnsubim[slice_x,slice_y]
[^] # Re: numpy / scipy
Posté par saimn . En réponse au journal ISS : le flim. Évalué à 4.
argmax renvoie l'indice du max mais en 1D (comme si l'image était un tableau 1D), bien qu'à lire la doc je pensait récupérer directement un indice 2D. Du coup unravel_index permet de calculer l'indice 2D correspondant (en lui donnant la taille du tableau, im.shape).
J'ai finit par faire une petite fonction qui fait tout et renvoie l'imagette de l'objet (0.68s pour une image contre 14.7 auparavant avec le script et l'image que tu as donné ci-dessus, 1.5s en travaillant sur l'image entière au lieu d'une imagette 100x100):