imwrite et l'unicode
Le problème exposé dans ce sujet a été résolu.
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 :
| path = "é.png"
path = unicode(path)
cv2.imwrite(path, mat)
|
Puis-je résoudre ce facheux souci ?
Merci !
- Rajoute un
# -*- coding: Utf-8 -*-
en haut de ton code.
- Vérifie que ton code est bien encodé en Utf-8.
- Change
"é.png"
pour u"é.png"
.
Si rien de tout ça ne marche, passe à Python 3.
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
.
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.
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.
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
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