imwrite et l'unicode

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J'utilise OpenCV avec Python 2 - le module cv2 - et je me heurte à un problème d'encodage lors de l'appel à imwrite. En effet, il me dit UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 44: ordinal not in range(128) lorsque j'utilise un caractère accentué - ou plutôt hors de la table ASCII - dans le premier argument de la fonction.

Pourtant, j'ai bien quelque chose du genre :

1
2
3
path = "é.png"
path = unicode(path)
cv2.imwrite(path, mat)

Puis-je résoudre ce facheux souci ?

Merci !

+0 -0
Auteur du sujet

Malheureusement, ça ne fonctionne pas. Je pense que ça doit être la fonction d'OpenCV qui convertit l'argument en str

OpenCV requière Numpy, donc pas de Python 3.

Edit: d'ailleurs, ça fait pareil avec imread.

Édité par Vayel

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

OpenCV requière Numpy, donc pas de Python 3.

Numpy est compatible avec Python3 depuis des lustres. OpenCv le sera dans le version à venir.

En attendant, pourquoi tu met la ligne path = unicode(path). Chez moi ça marche très bien sans. C'est elle qui génère le prob.

+1 -0
Auteur du sujet

En effet… Merci !

Il me semblait pourtant avoir ajouté cette ligne à cause de l'erreur du premier message, sans conséquence. Je perds la boule.

Edit: Ah oui c'est ça ! C'est parce que path était la concaténation d'une chaîne str et d'une unicode.

Édité par Vayel

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte