|  | @@ -75,7 +75,25 @@ def filtered(obj, objects_to_track, object_filters):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def create_tensor_input(frame, model_shape, region):
 | 
	
		
			
				|  |  | -    cropped_frame = yuv_region_2_rgb(frame, region)
 | 
	
		
			
				|  |  | +    # TODO: is it faster to just convert grayscale to RGB? or repeat dimensions with numpy?
 | 
	
		
			
				|  |  | +    height = frame.shape[0] // 3 * 2
 | 
	
		
			
				|  |  | +    width = frame.shape[1]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # get the crop box if the region extends beyond the frame
 | 
	
		
			
				|  |  | +    crop_x1 = max(0, region[0])
 | 
	
		
			
				|  |  | +    crop_y1 = max(0, region[1])
 | 
	
		
			
				|  |  | +    crop_x2 = min(width, region[2])
 | 
	
		
			
				|  |  | +    crop_y2 = min(height, region[3])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    size = region[3] - region[1]
 | 
	
		
			
				|  |  | +    cropped_frame = np.zeros((size, size), np.uint8)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    cropped_frame[
 | 
	
		
			
				|  |  | +        0 : crop_y2 - crop_y1,
 | 
	
		
			
				|  |  | +        0 : crop_x2 - crop_x1,
 | 
	
		
			
				|  |  | +    ] = frame[crop_y1:crop_y2, crop_x1:crop_x2]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    cropped_frame = np.repeat(np.expand_dims(cropped_frame, -1), 3, 2)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # Resize to 300x300 if needed
 | 
	
		
			
				|  |  |      if cropped_frame.shape != (model_shape[0], model_shape[1], 3):
 |