Ich muss viele Operationen auf einem Bild durchführen. Also habe ich OpenCV benutzt. OpenCV ist sehr effizient in der Bildverarbeitung, aber es ist nicht gut, eine geeignete GUI zu präsentieren. Also entschied ich mich, PyQt zu verwenden, um eine benutzerdefinierte GUI und OpenCV zu zeichnen, um mein Bild zu verarbeiten.Wie kombiniere ich OpenCV mit PyQt, um eine einfache GUI zu erstellen?
Ich habe ein sehr einfaches Programm erstellt, das Sie direkt aus der Dokumentation ausgewählt haben. Ich lese einfach ein jpg
Bild und speichern Sie es in einem png
Format durch Drücken der Taste s
.
Mein Ziel ist es, den Schlüssel s
durch eine Taste zu ersetzen, um die gleiche Aktion mit PyQt durchzuführen. Außerdem möchte ich, dass das von PyQt angezeigte Fenster das gleiche Verhalten wie OpenCV hat: Hauptsächlich zeigt die Funktion imshow()
ein Fenster an, das zur Bildgröße passt.
Hier ist mein OpenCV einfacher Code:
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()
Ausgang:
Hier ist ein einfacher PyQt Code ein einfaches Fenster zu zeichnen:
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()
Wie kann Ich mische die 2 Codes, um mein Ziel zu erreichen?
Vielen Dank für den Versuch. Zuerst muss ich wirklich OpenCV für die Bildverarbeitung verwenden. Zweitens habe ich mehrere Fehler beim Kompilieren Ihres Codes bekommen. +1 aber für die Mühe. –
Dieser Code scheint korrekt zu sein. Die Verarbeitung erfolgt in OpenCV (z. B. cv2.cvtColor) und nur die Anzeige wird mit Qt (QPixmap) verarbeitet, was in Ordnung ist. Ich mache das gleiche in vielen Skripten. Seien Sie jedoch vorsichtig, wenn Sie Ihr Bild von cv in qt konvertieren (suchen Sie im Web nach Konvertern)! – Mailerdaimon