OpenCVで取得した画像をPySideで表示する

2015/8/11

Python2.7.6, OpenCV3.0.0, PySide1.2.2

変換部分としてはこんな。

import cv2
from PySide import QtCore,QtGui
~~~
cv_img = cv2.imread('test.png')
cv_img =  cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB)

height, width, dim = cv_img.shape
bytesPerLine = dim * width

qt_img = QtGui.QImage(cv_img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888)


OpenCVを使って取得したUSBカメラの画像をPySideのウィンドウに表示する

# -*- coding: utf-8 -*-

import sys,os
from PySide import QtCore,QtGui
import cv2

class Viewer():

    repeatTime = 100 # ms

    def __init__(self):
        #camera setup
        self.capture = cv2.VideoCapture(0)

        if self.capture.isOpened() is False:
            raise("IO Error")

        #window setup
        self.view = QtGui.QGraphicsView()
        self.scene = QtGui.QGraphicsScene()
        self.set()

        #update timer
        timer = QtCore.QTimer(self.view)
        timer.timeout.connect(self.set)
        timer.start(self.repeatTime)

    def set(self):

        ret, cv_img = self.capture.read()
        if ret == False:
            return
        cv_img = cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB)
        height, width, dim = cv_img.shape
        bytesPerLine = dim * width
        self.image = QtGui.QImage(cv_img.data, width, height, bytesPerLine, QtGui.QImage.Format_RGB888)
        self.item = QtGui.QGraphicsPixmapItem(QtGui.QPixmap.fromImage(self.image))
        self.scene.clear()
        self.scene.addItem(self.item)
        self.view.setScene(self.scene)

    def show(self):
        self.view.show()


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    viewer = Viewer()
    viewer.show()
    sys.exit(app.exec_())


PyQt(PySide)で画像処理その3(OpenCVとの連携)
http://tatabox.hatenablog.com/entry/2014/09/02/185727