Bonjour,
quelle classe dois-je utiliser pour récupérer les données d'une image afin d'effectuer des transformations (géométrique, pas besoin de toucher aux couleurs) afin de les afficher dans une nouvelle image ?
Version imprimable
Bonjour,
quelle classe dois-je utiliser pour récupérer les données d'une image afin d'effectuer des transformations (géométrique, pas besoin de toucher aux couleurs) afin de les afficher dans une nouvelle image ?
Bonjour,
Avec une QImage, on peut modifier sa taille avec les méthodes scaled, scaledToWidth et scaledToHeight. L'avantage des 2 dernières méthodes est de préserver le rapport hauteur/largeur.
Pour assurer la qualité de la modification de taille, il faut utiliser l'option QtCore.Qt.SmoothTransformation (filtre bilinéaire).
En faite je parlait de transformation géométrique sur le contenu de l'image.
C'est à dire appliquer des matrices de transformations sur le contenu de l'image.
Ok, Pillow semble bien. Pour les opérations mathématiques je comptais déja utiliser Numpy.
Du coup commen je peux convertir un QImage dans le format Pillow ?
QImage peut enregistrer (save) et charger (load) des images sous les formats courants (extrait de la doc):
BMP Windows Bitmap Read/write
GIF Graphic Interchange Format (optional) Read
JPG Joint Photographic Experts Group Read/write
JPEG Joint Photographic Experts Group Read/write
PNG Portable Network Graphics Read/write
PBM Portable Bitmap Read
PGM Portable Graymap Read
PPM Portable Pixmap Read/write
XBM X11 Bitmap Read/write
XPM X11 Pixmap Read/write
Enfin je veux dire récupérer un objet Image de Pillow à partir d'un QImage, et j'entend par là une conversion plus ou moins direct dans le code, sans passer par une sauvegarde dans un fichier.
Salut,
Tu ne dois pas passer par une sauvegarde puisque ton image existe déjà sur ton disque.
Peu importe que tu l'aies affichée avec Qt, tu la réouvres normalement avec PIL, tu appliques ta transformation et ensuite tu utilises ImageQt pour la refiler directement à Qt sans passer par une sauvegarde.
Si tu utilises openCV, il y a un peu plus de code:
(Je copie tel quel)
Code:
1
2
3
4
5
6
7
8
9
10
11
12 def convert_to_qimage(self): """Convert a cv.Mat to a QImage. """ w, h = self.get_image_size() mat = cv.CreateMat(h, w, cv.CV_8UC3) cv.CvtColor(self.image, mat, cv.CV_BGR2RGB) cl, rw, st = mat.cols, mat.rows, mat.step # Parametre mat.step is not used here. Need more test! #return QtGui.QImage(mat.tostring(), cl, rw, st, QtGui.QImage.Format_RGB888) return QtGui.QImage(mat.tostring(), cl, rw, QtGui.QImage.Format_RGB888)