2015-11-16 7 views
2

До этого вопроса отвергается как дубликат, пожалуйста, обратите внимание:Преобразовать OpenCV 3 (IplImage) в PyQt5 QImage/QPixmap в Python

  • Использование OpenCV версии 3 (не версия 2)
  • Использование Python 3 (не C++)
  • Использование PyQt 5 (не PyQt4)

Цель: Попытка поток OpenCV веб-камера видеокадры в окне PyQt5 GUI

# For testing, I'm simply reading in a single image instead of a video frame 

frame = cv2.imread('Koala.jpg',0)  # this is a numpy.ndarray object 
height, width = frame.shape   
my_image = QImage(frame.tostring(), width, height, QImage.Format_RGB888) 

# By here, things seem okay. print(mimage) basically says <QImage object at 0x32243> 

# my_image.rgbSwapped()    # This line crashes program 
pixmap = QPixmap.fromImage(mimage) # This line crashes program as well 

Я не уверен, как отлаживать это. На консоль не выводятся трассировки ошибок. Любая помощь приветствуется. Заранее спасибо.

ответ

1

вам нужно сначала преобразовать изображение openCv в QImage, а использовать имидж pixmap для отображения изображения следующим образом, так как pixmap поддерживает формат QImage.

height, width, bytesPerComponent = Img.shape 
    bytesPerLine = 3 * width 
    cv2.cvtColor(Img, cv2.COLOR_BGR2RGB, Img)           
    QImg = QImage(Img.data, width, height, bytesPerLine,QImage.Format_RGB888) 

теперь используют этот QImg для PIXMAP

pixmap = QPixmap.fromImage(QImg)