Comment combiner OpenCV avec PyQt pour créer une interface graphique simple?
J'ai besoin d'effectuer beaucoup d'opérations sur une image. J'ai donc utilisé OpenCV. OpenCV est très efficace dans le traitement de l'image, mais il n'est pas trop bon pour présenter un adapté GUI. J'ai donc décidé d'utiliser PyQt pour dessiner un GUI personnalisé et OpenCV pour le traitement de mon image.
J'ai créé un programme très simple vous directement repris de la documentation. J'ai tout simplement lire un jpg
de l'image et de l'enregistrer dans un png
format en appuyant sur la touche s
.
Mon but est de remplacer la clé s
avec un bouton pour effectuer la même action à l'aide de PyQt. Aussi, je veux la fenêtre affichée par PyQt pour avoir le même comportement que OpenCV: principalement en parlant, la fonction imshow()
affiche une fenêtre qui s'adapte à la taille de l'image.
Voici mon OpenCV code simple:
import numpy
import cv2
class LoadImage:
def loadImage(self):
img = cv2.imread('photo.jpg')
cv2.imshow('Image on a window',img)
k = cv2.waitKey(0)
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('photopng.png',img)
cv2.destroyAllWindows()
if __name__=="__main__":
LI=LoadImage()
LI.loadImage()
De sortie:
Ici est une simple PyQt code pour dessiner une fenêtre simple:
import sys
from PyQt4 import QtGui
class DrawWindow:
def drawWindow(self):
app=QtGui.QApplication(sys.argv)
w=QtGui.QWidget()
#w.resize(250,250)
w.move(300,300)
w.setWindowTitle("Simple Window")
w.show()
sys.exit(app.exec_())
if __name__=="__main__":
DW=DrawWindow()
DW.drawWindow()
Comment puis-je mélanger les 2 codes pour atteindre mon objectif?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Modifié du code en se basant sur votre post, je n'ai pas utilisé le Opencv pour le rendu de l'image, au lieu d'utiliser QPixmap pour le rendu. ensuite, utilisez événement keypressevent pour capturer l'entrée de l'utilisateur .