Beispiel #1
0
def main():
    logging.basicConfig(
        level=logging.INFO,
        format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
        handlers=[
            logging.StreamHandler()
        ]
    )

    lst = queue.LifoQueue(5)
    # Video source can be anything compatible with cv2.VideoCapture.open()
    # in DEMO videofeed is provided by a RPI 3B and videoStreamer.py
    camTh = CameraThread("http://192.168.12.131:8000/stream.mjpg", lst)
    camTh.start()

    cvTh = CvThread(lst, (0, 0, 0, 0), (180, 255, 35, 0), True)
    cvTh.start()

    while True:
        # Who dies first kills the other
        if not camTh.isAlive():
            cvTh._evt.set()

        if not cvTh.isAlive():
            camTh._evt.set()

        # If everyone is dead, quit mainThread
        if not cvTh.isAlive() and not camTh.isAlive():
            break
        time.sleep(0.1)  # Save a bit of CPU
    logging.debug("quit")
Beispiel #2
0
 def __init__(self, parent=None):
     super(CameraTab, self).__init__(parent)
     
     self.indicatorBuffer = []
     self.maxIndicator = 0
     
     self.cameraThreadObject = CameraThread()
     self.cameraThread = QtCore.QThread()
     self.cameraThreadObject.moveToThread(self.cameraThread)
     self.cameraThread.started.connect(self.cameraThreadObject.setup)
     
     self.setupGUI()
     
     self.settingsShowCapture.stateChanged.connect(self.settingsCaptureRadioMarked.setEnabled)
     self.settingsShowCapture.stateChanged.connect(self.settingsCaptureRadioUnfiltered.setEnabled)
     self.settingsShowCapture.stateChanged.connect(self.settingsCaptureRadioMask.setEnabled)
     self.settingsGainSelection.sigValueChanged.connect(self._settingsGainChanged)
     self.settingsExposureSelection.sigValueChanged.connect(self._settingsExposureChanged)
     self.settingsCaptureRadioUnfiltered.clicked.connect(self._settingsCaptureChanged)
     self.settingsCaptureRadioMarked.clicked.connect(self._settingsCaptureChanged)
     self.settingsCaptureRadioMask.clicked.connect(self._settingsCaptureChanged)
     
     self.settingsStartStopBtn.clicked.connect(self.connectButtonClicked)
     self.radioCOMRefreshButton.clicked.connect(self._refreshCOMPorts)
     self.radioConnectButton.clicked.connect(self._connectRadio)
     self.radioTestButton.clicked.connect(self._performRadioTest)
     self.radioSendUpdates.stateChanged.connect(lambda state:
         self.sendCommand.emit("radio on" if state else "radio off"))
     def clearIndicatorBuffer():
         self.indicatorBuffer = []
         self.maxIndicator = 0
         self.telemetryRadioDelayIndicator.setText("?")
     self.telemetryRadioIndicatorReset.clicked.connect(clearIndicatorBuffer)
     
     self.cameraThreadObject.frameCaptured.connect(self._updateCameraFrame)
     self.cameraThreadObject.message.connect(self.settingsStatusLabel.setText)
     self.cameraThreadObject.connected.connect(self._cameraConnected)
     self.cameraThreadObject.disconnected.connect(self._cameraDisconected)
     self.cameraThreadObject.fpsUpdated.connect(lambda x: self.settingsFPSCurrent.setText("%.1f" % (x)))
     self.cameraThreadObject.telemetry.connect(self._telemetryFromCamera)
     
     self.cameraThread.start()
Beispiel #3
0
import threading
import time
import sys

from CameraThread import CameraThread
from FaceDetection import FaceDetection
from IOThread import IOThread

max_frames = int(sys.argv[1])

# mulithreading stuff
shared1 = []
shared2 = []
lock1 = threading.Lock()
lock2 = threading.Lock()

threads = [
    CameraThread(max_frames, lock1, shared1),
    FaceDetection(max_frames, lock1, lock2, shared1, shared2),
    IOThread(max_frames, lock2, shared2)
]

for thread in threads:
    thread.start()

for thread in threads:
    thread.join()