only convert pix_fmt when necessary

This commit is contained in:
Blake Blackshear
2020-10-10 21:28:12 -05:00
parent a611cbb942
commit 12c4cd77c5
4 changed files with 42 additions and 12 deletions

View File

@@ -14,7 +14,7 @@ import json
import base64
from typing import Dict, List
from collections import defaultdict
from frigate.util import draw_box_with_label, area, calculate_region, clipped, intersection_over_union, intersection, EventsPerSecond, listen, FrameManager, SharedMemoryFrameManager
from frigate.util import draw_box_with_label, yuv_region_2_rgb, area, calculate_region, clipped, intersection_over_union, intersection, EventsPerSecond, listen, FrameManager, SharedMemoryFrameManager
from frigate.objects import ObjectTracker
from frigate.edgetpu import RemoteObjectDetector
from frigate.motion import MotionDetector
@@ -88,7 +88,7 @@ def filtered(obj, objects_to_track, object_filters, mask=None):
return False
def create_tensor_input(frame, region):
cropped_frame = frame[region[1]:region[3], region[0]:region[2]]
cropped_frame = yuv_region_2_rgb(frame, region)
# Resize to 300x300 if needed
if cropped_frame.shape != (300, 300, 3):
@@ -303,14 +303,11 @@ def process_frames(camera_name: str, frame_queue: mp.Queue, frame_shape,
# re-compute regions
regions = [calculate_region(frame_shape, a[0], a[1], a[2], a[3], 1.0)
for a in combined_regions]
if len(regions) > 0:
rgb_frame = cv2.cvtColor(frame, cv2.COLOR_YUV2RGB_I420)
# resize regions and detect
detections = []
for region in regions:
detections.extend(detect(object_detector, rgb_frame, region, objects_to_track, object_filters, mask))
detections.extend(detect(object_detector, frame, region, objects_to_track, object_filters, mask))
#########
# merge objects, check for clipped objects and look again up to 4 times
@@ -343,7 +340,7 @@ def process_frames(camera_name: str, frame_queue: mp.Queue, frame_shape,
box[0], box[1],
box[2], box[3])
selected_objects.extend(detect(object_detector, rgb_frame, region, objects_to_track, object_filters, mask))
selected_objects.extend(detect(object_detector, frame, region, objects_to_track, object_filters, mask))
refining = True
else: