pyQt и opencCV s pyQt и существует, и вылетает из программы

У меня есть программа, которая включает в себя как PyQt и OpenCV. Я установил opencv с anaconda и установил pyqt отдельно некоторое время назад. Я запускаю anaconda python2.7 на машине с OSX.

Пример кода ниже, он должен иметь кнопку, которая включает камеру openCV и помещает изображение в self.video_frame, который является QLable()

from PyQt4 import QtGui
from PyQt4.QtGui import QImage,QPixmap
import PyQt4.QtCore as QtCore
import cv2,sys, time

class QtCapture(QtGui.QWidget):
    def __init__(self, *args):
        self.app = QtGui.QApplication(sys.argv)
        super(QtGui.QWidget, self).__init__()
        self.layout = QtGui.QGridLayout()
        self.w = QtGui.QWidget() # Main gui object
        self.w.setMinimumHeight(480)
        self.capture = None
        self.frame = None
        self.video_frame = QtGui.QLabel()
        self.button_start = QtGui.QPushButton('Camera Connect')
        self.button_start.setFixedWidth(300)
        self.button_start.clicked.connect(lambda: self.start())
        self.w.setLayout(self.layout)

        self.layout.addWidget(self.button_start, 0, 0)   
        self.layout.addWidget(self.video_frame, 0, 1, 16, 1)
        self.w.show()
        print "Init"


    def nextFrameSlot(self):
        try:
            previous_frame = self.current_frame
            ret, self.frame = self.cap.read()
            self.current_frame = self.frame
            frame_diff = cv2.absdiff(self.current_frame, previous_frame)
            qformat= QImage.Format_Indexed8
            if len(self.frame.shape) == 3:
                if self.frame.shape[2] == 4:
                    qformat=QImage.Format_RGBA8888
                else:
                    qformat=QImage.Format_RGB888
            img = QtGui.QImage(self.frame, self.frame.shape[1], self.frame.shape[0], self.frame.strides[0], qformat)
            self.video_frame.setPixmap(QtGui.QPixmap.fromImage(img))
            self.video_frame.setScaledContents(True)
        except Exception, e:
            print "Failed"
            self.timer.stop()


    def start(self):
        print "button_start pressed. "
        try:
            self.cap = cv2.VideoCapture(0)
            self.start_time = time.time()
            self.timer = QtCore.QTimer()
            ret, self.current_frame = self.cap.read()
            self.timer.timeout.connect(self.nextFrameSlot)
            self.timer.start(1./10.)
        except Exception, e:
            print "failed"



    def closeEvent(self, event):
        print "Closing"
        self.deleteLater()

    def deleteLater(self):
        print('closed')
        self.cap.release()
        super(QtGui.QWidget, self).deleteLater()




def main():
    #calibration_pts = getCalibrationCoordinates(cameraChoice)

    sozen = QtCapture()
    sys.exit(sozen.app.exec_())
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

Я получил следующее сообщение вместе со всеми другими классами QCocoa:

    Class QCocoaMenu is implemented in both 
/Users/myname/anaconda/lib/libQtGui.4.8.7.dylib (0x104a7c150)
 and /Users/myname/anaconda/lib/python2.7/site-packages/cv2/.dylibs/QtGui (0x107b6a120). 
One of the two will be used. Which one is undefined.

Программа также вылетает с Abort trap: 6,

Посоветуйте, пожалуйста, если знаете, что там может произойти?

0 ответов

Другие вопросы по тегам