2017-09-21 4 views
0

Je souhaite redimensionner l'image représentée par uint16 valeurs dans chaque canal de couleur. Si j'utilise imresize, il convertit les données en valeurs uint8. Comment puis-je conserver uint16 et redimensionner l'image?Existe-t-il un analogue qui peut fonctionner avec plus de 8 couleurs en Python?

Je voudrais également utiliser la méthode de redimensionnement interp='lanczos' - pour non seulement réduire les données mais préserver les détails. Y at-il imresize analogique qui peut fonctionner avec plus de couleurs de 8 bits en Python?

Répondre

0

Solution: promouvoir à int32 et définissez l'argument de mode pour dire PIL à respecter:

scipy.misc.imresize(
    my_data.astype(np.int32), 
    size=..., interp=..., mode='I' 
).astype(np.uint16) 
+0

Je l'ai essayé et ça ne fonctionne pas. Il convertit le format 'I' en 8 bits avant le redimensionnement. – Dmitry

+0

Que voulez-vous dire? Le type du résultat est 'np.int32', pas' np.uint8' – Eric

+1

Le type pourrait être 'np.int32', mais les valeurs sont converties en' np.uint8' (0..255). – Dmitry