Beispiel #1
0
 def processDrawings(self, image):
     # convert to rgb so that coloured lines can be drawn on top
     image = filterlib.color(image)
     for item in self.drawingRouting:
         image = getattr(drawing, item['drawingName'],
                         drawing.drawingNotDefined)(image, item['args'])
     return image
Beispiel #2
0
 def updateFrame(self):
     if self.isFireWire():
         if self.isUpdating():
             frameOriginal = self.cam.dequeue()
             if not self.isFilterBypassed(
             ) and not self.filterRouting == []:
                 frameFiltered = self.processFilters(frameOriginal.copy())
             else:
                 frameFiltered = frameOriginal
             if self.isObjectDetectionEnabled():
                 frameProcessed = self.processObjectDetection(
                     frameFiltered, frameOriginal)
             else:
                 frameProcessed = frameFiltered
             if self.isDrawingEnabled():
                 frameProcessed = self.processDrawings(frameProcessed)
             if self.isSnapshotEnabled():
                 cv2.imwrite('snapshot.png',
                             filterlib.color(frameProcessed))
                 self.setStateSnapshotEnabled(False)
             if self.isVideoWritingEnabled():
                 self.videoWriter.write(filterlib.color(frameProcessed))
             cv2.imshow(self.windowName(), frameProcessed)
             frameOriginal.enqueue()
     else:
         if self.isUpdating():
             _, frameOriginal = self.cap.read()
             if not self.isFilterBypassed(
             ) and not self.filterRouting == []:
                 frameFiltered = self.processFilters(frameOriginal.copy())
             else:
                 frameFiltered = frameOriginal
             if self.isObjectDetectionEnabled():
                 frameProcessed = self.processObjectDetection(
                     frameFiltered, frameOriginal)
             else:
                 frameProcessed = frameFiltered
             if self.isDrawingEnabled():
                 frameProcessed = self.processDrawings(frameProcessed)
             if self.isSnapshotEnabled():
                 cv2.imwrite('snapshot.png',
                             filterlib.color(frameProcessed))
                 self.setStateSnapshotEnabled(False)
             if self.isVideoWritingEnabled():
                 self.videoWriter.write(filterlib.color(frameProcessed))
             cv2.imshow(self.windowName(), frameProcessed)
Beispiel #3
0
    def processObjectDetection(self,imageFiltered,imageOriginal):
        # convert to rgb so that coloured lines can be drawn on top
        imageOriginal = filterlib.color(imageOriginal)

        # object detection algorithm starts here
        # In this function, information about the agent will be updated, and the original image with
        # the detected objects highlighted will be returned
        algorithm = getattr(objectDetection,self._detectionAlgorithm,objectDetection.algorithmNotDefined)
        imageProcessed = algorithm(imageFiltered,imageOriginal,self.agent1) # pass instances of Agent class if you want to update its info
        return imageProcessed
Beispiel #4
0
    def updateFrame(self):
        if self.isFireWire():
            if self.isUpdating():
                frameOriginal = self.cam.dequeue()
                if not self.isFilterBypassed(
                ) and not self.filterRouting == []:
                    frameFiltered = self.processFilters(frameOriginal.copy())
                else:
                    frameFiltered = frameOriginal
                if self.isObjectDetectionEnabled():
                    frameProcessed = self.processObjectDetection(
                        frameFiltered, frameOriginal)
                else:
                    frameProcessed = frameFiltered
                if self.isFieldDrawingEnabled():
                    self.fieldDrawing(self._field.x, self._field.y,
                                      self._field.freq, self._field.mag,
                                      self.time, self.separation,
                                      self.orientation)
                if self.isAgentDrawingEnabled():
                    for i in range(0, 4):
                        self.agentDrawing(self.agent[i].x, self.agent[i].y)
                if self.isCOMDrawingEnabled():
                    self.COMDrawing(self.agent[0].x, self.agent[0].y,
                                    self.agent[1].x, self.agent[1].y,
                                    self.agent[2].x, self.agent[2].y,
                                    self.agent[3].x, self.agent[3].y)
                if self.isDrawingEnabled():
                    frameProcessed = self.processDrawings(frameProcessed)
                if self.isSnapshotEnabled():
                    cv2.imwrite('snapshot.png',
                                filterlib.color(frameProcessed))
                    self.setStateSnapshotEnabled(False)
                if self.isVideoWritingEnabled():
                    self.videoWriter.write(filterlib.color(frameProcessed))

                cv2.imshow(self.windowName(), frameProcessed)
                frameOriginal.enqueue()
                self.clearDrawingRouting()
        else:
            if self.isUpdating():
                _, frameOriginal = self.cap.read()
                if not self.isFilterBypassed(
                ) and not self.filterRouting == []:
                    frameFiltered = self.processFilters(frameOriginal.copy())
                else:
                    frameFiltered = frameOriginal
                if self.isObjectDetectionEnabled():
                    frameProcessed = self.processObjectDetection(
                        frameFiltered, frameOriginal)
                else:
                    frameProcessed = frameFiltered
                if self.isFieldDrawingEnabled():
                    self.fieldDrawing(self._field.x, self._field.y,
                                      self._field.freq, self._field.mag,
                                      self.time, self.separation,
                                      self.orientation)
                if self.isAgentDrawingEnabled():
                    for i in range(0, 4):
                        self.agentDrawing(self.agent[i].x, self.agent[i].y)
                if self.isCOMDrawingEnabled():
                    self.COMDrawing(self.agent[0].x, self.agent[0].y,
                                    self.agent[1].x, self.agent[1].y,
                                    self.agent[2].x, self.agent[2].y,
                                    self.agent[3].x, self.agent[3].y)
                if self.isDrawingEnabled():
                    frameProcessed = self.processDrawings(frameProcessed)
                if self.isSnapshotEnabled():
                    cv2.imwrite('snapshot.png',
                                filterlib.color(frameProcessed))
                    self.setStateSnapshotEnabled(False)
                if self.isVideoWritingEnabled():
                    self.videoWriter.write(filterlib.color(frameProcessed))

                self.frameCounter += 1
                #If the last frame is reached, reset the capture and the frame_counter
                if self.frameCounter == self.cap.get(cv2.CAP_PROP_FRAME_COUNT):
                    self.frameCounter = 0  #Or whatever as long as it is the same as next line
                    self.cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
                #print(self.frameCounter)

                cv2.imshow(self.windowName(), frameProcessed)
                self.clearDrawingRouting()