def process_frame(self, frame: VideoFrame) -> bool: timestamp = int(round(time.time()*1000)) events = [] new_counts = Counter() for detection in frame.regions(): new_counts[detection.meta().get_roi_type()] += 1 for key, count in new_counts.items(): if key in self.item_count: if count > self.item_count[key]: for x in range(0, count-self.item_count[key]): events.append({'event_time': timestamp, 'roi_action': 'ENTER', 'object_id': key}) elif count < self.item_count[key]: for x in range(0, self.item_count[key]-count): events.append({'event_time': timestamp, 'roi_action': 'DEPART', 'object_id': key}) else: for x in range(0, count): events.append({'event_time': timestamp, 'roi_action': 'ENTER', 'object_id': key}) for key, count in self.item_count.items(): if key not in new_counts: for x in range(0, count): events.append({'event_time': timestamp, 'roi_action': 'DEPART', 'object_id': key}) if events: frame.add_message(json.dumps(events)) self.item_count = new_counts if self.item_count['bottle'] <= 1: frame.add_region(0, 0, 0, 0, 0, region_tensor=REGION_TENSOR) else: frame.add_region(0, 0, 0, 0, 0, region_tensor=VideoFrame.create_labels_structure( ["Bottle Count: " + str(self.item_count['bottle'])])) if (self.item_count['person'] > 0) and self.redact_person: with frame.data() as contents: contents[:] = 0 self.remove_regions(frame) frame.add_region(0, 0, 0, 0, 1, region_tensor=REGION_TENSOR) return True
def draw_ts(frame: VideoFrame) -> bool: font = cv2.FONT_HERSHEY_SIMPLEX msgs = frame.messages() for m in msgs: data = json.loads(m) if start_ts is not None: data["ts"] = int(start_ts) + int(data["timestamp"] / 1000000000) else: data["ts"] = int(time.time()) frame_ts = data["ts"] frame.remove_message(m) frame.add_message(json.dumps(data)) with frame.data() as mat: cv2.putText(mat, str(frame_ts), (20, 20), font, 1, (255, 255, 255), 2) return True
def process_frame(self, frame: VideoFrame) -> bool: try: logger.debug('Python Bridge.process_frame() method invoked!') for message in frame.messages(): frame.remove_message(message) msg_dict = { "name": self._edgex_device, "cmd": self._edgex_command, "method": "get", self._edgex_resource: message } msg_dict = json.dumps(msg_dict) frame.add_message(msg_dict) logger.debug('Done!') except Exception: print_message("Error processing frame: {}".format( traceback.print_exc())) return True
def process_frame(self, frame: VideoFrame) -> bool: msgs = frame.messages() for m in msgs: data = json.loads(m) if self.ts is not None: ts = int(ciso8601.parse_datetime(self.ts).timestamp()) data["ts"] = int(ts) + int(data["timestamp"] / 1000000000) else: data["ts"] = int(time.time()) self.fs = data["ts"] frame.remove_message(m) frame.add_message(json.dumps(data)) # print(data) with frame.data() as mat: cv2.putText(mat, str(self.fs), (20, 20), font, 0.5, (255, 255, 255), 2) return True