Je suis nouveau sur Python. J'ai écrit (Python 3.6.1) une fonction simple pour la rotation des images à l'aide des outils skimage.transform
:Python: copier des images RVB à l'intérieur de la fonction
def rotate_20rand(X):
X_aug = np.zeros_like(X)
for i,img in enumerate(X):
X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
return X_aug
Je passe mon jeu de données np.ndarray
de (34799, 32, 32, 3)
images à elle. Si les images sont en niveaux de gris, la sortie de la fonction est correcte. Cependant, après le passage des images RVB X_aug
contient tous les zéros.
J'ai essayé ce qui suit:
- D'abord, je vérifie si la fonction
transform.rotate(...)
fonctionne après que je passe l'image RVB à elle. Puis j'ai pensé que le problème est:X_aug[i] = transform.rotate(img, angle=np.random.uniform(-20, 20))
et essayé différentes méthodescopy
.
Aucun de ceux-ci n'a aidé et je ne sais pas ce que je fais mal.
Merci, @RomanMindlin, ce code fonctionne pour moi. Cependant, je n'arrive toujours pas à comprendre ce qui ne va pas avec la fonction d'origine. Utilisez-vous aussi Python 3? J'ai essayé de remplacer le code d'initialisation 'X_aug' par' X_aug = copy.deepcopy (X) 'mais après l'opération d'affectation dans la boucle, toutes les entrées de' X_aug' deviennent des zéros. –
J'ai testé votre code avec Python 3.5.2, numpy == 1.13.1, scikit-image == 0.13.1. Probablement, vous avez un problème dans une autre partie du code, très probablement avec des espaces de noms de variables. S'il vous plaît, n'oubliez pas d'accepter la réponse) –