mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
add ability to draw bounding boxes/timestamps on snapshots
This commit is contained in:
parent
c064b244db
commit
bf93fbb357
@ -164,7 +164,8 @@ def main():
|
|||||||
for name, config in CONFIG['cameras'].items():
|
for name, config in CONFIG['cameras'].items():
|
||||||
config['snapshots'] = {
|
config['snapshots'] = {
|
||||||
'show_timestamp': config.get('snapshots', {}).get('show_timestamp', True),
|
'show_timestamp': config.get('snapshots', {}).get('show_timestamp', True),
|
||||||
'draw_zones': config.get('snapshots', {}).get('draw_zones', False)
|
'draw_zones': config.get('snapshots', {}).get('draw_zones', False),
|
||||||
|
'draw_bounding_boxes': config.get('snapshots', {}).get('draw_bounding_boxes', True)
|
||||||
}
|
}
|
||||||
config['zones'] = config.get('zones', {})
|
config['zones'] = config.get('zones', {})
|
||||||
|
|
||||||
|
@ -269,6 +269,12 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
if not 'frame' in obj:
|
if not 'frame' in obj:
|
||||||
return
|
return
|
||||||
best_frame = cv2.cvtColor(obj['frame'], cv2.COLOR_YUV2BGR_I420)
|
best_frame = cv2.cvtColor(obj['frame'], cv2.COLOR_YUV2BGR_I420)
|
||||||
|
if self.camera_config[camera]['snapshots']['draw_bounding_boxes']:
|
||||||
|
thickness = 2
|
||||||
|
color = COLOR_MAP[obj['label']]
|
||||||
|
box = obj['box']
|
||||||
|
draw_box_with_label(best_frame, box[0], box[1], box[2], box[3], obj['label'], f"{int(obj['score']*100)}% {int(obj['area'])}", thickness=thickness, color=color)
|
||||||
|
|
||||||
mqtt_config = self.camera_config[camera].get('mqtt', {'crop_to_region': False})
|
mqtt_config = self.camera_config[camera].get('mqtt', {'crop_to_region': False})
|
||||||
if mqtt_config.get('crop_to_region'):
|
if mqtt_config.get('crop_to_region'):
|
||||||
region = obj['region']
|
region = obj['region']
|
||||||
@ -277,6 +283,11 @@ class TrackedObjectProcessor(threading.Thread):
|
|||||||
height = int(mqtt_config['snapshot_height'])
|
height = int(mqtt_config['snapshot_height'])
|
||||||
width = int(height*best_frame.shape[1]/best_frame.shape[0])
|
width = int(height*best_frame.shape[1]/best_frame.shape[0])
|
||||||
best_frame = cv2.resize(best_frame, dsize=(width, height), interpolation=cv2.INTER_AREA)
|
best_frame = cv2.resize(best_frame, dsize=(width, height), interpolation=cv2.INTER_AREA)
|
||||||
|
|
||||||
|
if self.camera_config[camera]['snapshots']['show_timestamp']:
|
||||||
|
time_to_show = datetime.datetime.fromtimestamp(obj['frame_time']).strftime("%m/%d/%Y %H:%M:%S")
|
||||||
|
cv2.putText(best_frame, time_to_show, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, fontScale=.8, color=(255, 255, 255), thickness=2)
|
||||||
|
|
||||||
ret, jpg = cv2.imencode('.jpg', best_frame)
|
ret, jpg = cv2.imencode('.jpg', best_frame)
|
||||||
if ret:
|
if ret:
|
||||||
jpg_bytes = jpg.tobytes()
|
jpg_bytes = jpg.tobytes()
|
||||||
|
Loading…
Reference in New Issue
Block a user