Captura de video de OpenCV con PyQt4

He estado tratando de capturar video usando PyQt4 GUI y OpenCV. Creé algunos botones como "Inicio", "Fin", etc. para controlar la captura. Comenzar está bien, pero no puedo detener la captura. Para detener la captura, necesito romper el bucle whilestartCapture () La función de abajo, no pude lograrlo.

Actualmente,endCapture () destruye la ventana, perocaptura de inicio mientras bucle Simplemente lo crea y continúa la captura. La única opción es romper ese bucle.

A continuación se muestra el código que utilicé:

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_())

¿Alguien puede sugerir cómo romper ese bucle y salir de la captura?

Respuestas a la pregunta(2)

Su respuesta a la pregunta