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