2016-05-17 9 views
2

Dies ist die Aktion die Datei zu öffnen:I verwenden opencv ein Bild zu konvertieren in Graustufen, wie das Bild auf PyQt4 anzuzeigen

def file_open(self): 
    global img_raw 

    filename = QtGui.QFileDialog.getOpenFileName(self, 
          self.tr("Open Image"), ".", 
          self.tr("Image Files (*.jpg;*.bmp;*.png);;All Files (*)")) 
    #open the file 

    if not filename.isEmpty(): 
     cvfilename = filename.toLocal8Bit().data() 
     #convert Qstrig to char*    
     img_raw = cv2.imread(cvfilename) 
     #read image with opencv 

und ich verwende die opencv das Bild zu konvertieren:

def rgb2gray(self): 
    global img_gray, img_raw 
    img_gray = cv2.cvtColor(img_raw, cv2.COLOR_BGR2GRAY) 
    #image: RGB2Gray 

Dies wird ich der Code schreiben, um das Bild zu zeigen:

pixmap = QtGui.QPixmap.fromImage(image) 
    scaled_pixmap = pixmap.scaled(self.label2.size()) 
    self.label2.setPixmap(scaled_pixmap) 

wie kann ich die img_gray auf dem label2 zeigen?

Antwort

1

ist Ihr Code nicht wirklich abgeschlossen ist, so habe ich ein in du geschlossene Beispiel angebracht, die helfen können:

import cv2 
import sys 
from PySide import QtGui, QtCore 
from threading import Thread 


class MainWindow(QtGui.QMainWindow): 
    def __init__(self, cam=0, parent=None): 
     super(MainWindow, self).__init__(parent) 

     self.title = "Image" 

     widget = QtGui.QWidget() 
     self.layout = QtGui.QBoxLayout(QtGui.QBoxLayout.LeftToRight) 

     self.image = QtGui.QLabel() 

     self.layout.addWidget(self.image) 
     self.layout.addStretch() 

     self.setCentralWidget(widget) 
     widget.setLayout(self.layout) 

     self.setMinimumSize(640, 480) 
     self.frame = cv2.imread("image.jpg") 

     try: 
      self.height, self.width = self.frame.shape[:2] 

      img = QtGui.QImage(self.frame, self.width, self.height, QtGui.QImage.Format_RGB888) 
      img = QtGui.QPixmap.fromImage(img) 
      self.image.setPixmap(img) 

     except: 
      pass 

    def closeEvent(self, event): 
     cv2.destroyAllWindows() 
     event.accept() 


if __name__ == "__main__": 
    print cv2.__version__ 
    print (sys.version) 
    app = QtGui.QApplication(sys.argv) 
    window = MainWindow(0) 
    window.show() 
    sys.exit(app.exec_()) 
+0

DANKE! Ich füge das 'self.height, self.width = self.frame.shape [: 2]' hinzu und es wird schließlich auf dem Fenster angezeigt. Das result_image ist ein wenig seltsam, aber wie auch immer, es funktioniert. Vielen Dank. – Thera

+0

@Thera: Gern geschehen. Wenn die Lösungen funktionieren, sollten Sie normalerweise die Antwort akzeptieren, um anderen zu zeigen, dass dieses Problem geschlossen ist. schaue hier für weitere Details: http://StackOverflow.com/Help/Someone-answers – tfv

+0

Sorry ich benutze dies beim ersten Mal.THANKS.Ich habe Ihre Antwort angenommen. – Thera

Verwandte Themen