Captura de vídeo OpenCV com PyQt4

Eu tenho tentado capturar vídeo usando PyQt4 GUI e OpenCV. Eu criei alguns botões como "Iniciar", "Final" etc. para controlar a captura. Começar está bem, mas não consigo parar a captura. Para parar a captura, preciso interromper o loop whilecomeçar captura() função abaixo, eu não consegui.

Atualmente,endCapture () destrói a janela, mascomeçar captura enquanto loop simplesmente cria e continua a captura. A única opção é quebrar esse loop.

Abaixo está o código que eu usei:

import cv2
import numpy as np
from PyQt4 import QtGui, QtCore

def startCapture(cap):
    print "pressed start"
    while(True):
        ret, frame = cap.read()
        cv2.imshow("Capture", frame)
        cv2.waitKey(5)
    cv2.destroyAllWindows() 

def endCapture(cap):
    print "pressed End"
    cv2.destroyAllWindows()

def quitCapture(cap):
    print "pressed Quit"
    cv2.destroyAllWindows()
    cap.release()
    QtCore.QCoreApplication.quit()

class Window(QtGui.QWidget):
    def __init__(self):

        c = cv2.VideoCapture(0)

        QtGui.QWidget.__init__(self)
        self.setWindowTitle('Control Panel')

        self.start_button = QtGui.QPushButton('Start',self)
        self.start_button.clicked.connect(lambda : startCapture(c, True))

        self.end_button = QtGui.QPushButton('End',self)
        self.end_button.clicked.connect(lambda : endCapture(c))

        self.quit_button = QtGui.QPushButton('Quit',self)
        self.quit_button.clicked.connect(lambda : quit(c))

        vbox = QtGui.QVBoxLayout(self)
        vbox.addWidget(self.start_button)
        vbox.addWidget(self.end_button)
        vbox.addWidget(self.quit_button)

        self.setLayout(vbox)
        self.setGeometry(100,100,200,200)
        self.show()

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    sys.exit(app.exec_())

Alguém pode sugerir como quebrar esse loop e sair da captura?

questionAnswers(2)

yourAnswerToTheQuestion