mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	add the ability to mask the standing location of a person
This commit is contained in:
		
							parent
							
								
									3e803b6a03
								
							
						
					
					
						commit
						4dacf02ef9
					
				
							
								
								
									
										
											BIN
										
									
								
								config/back-mask.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								config/back-mask.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.8 MiB  | 
@ -13,27 +13,7 @@ cameras:
 | 
			
		||||
      # values that begin with a "$" will be replaced with environment variable
 | 
			
		||||
      password: $RTSP_PASSWORD
 | 
			
		||||
      path: /cam/realmonitor?channel=1&subtype=2
 | 
			
		||||
    regions:
 | 
			
		||||
      - size: 350
 | 
			
		||||
        x_offset: 0
 | 
			
		||||
        y_offset: 300
 | 
			
		||||
        min_person_area: 5000
 | 
			
		||||
      - size: 400
 | 
			
		||||
        x_offset: 350
 | 
			
		||||
        y_offset: 250
 | 
			
		||||
        min_person_area: 2000
 | 
			
		||||
      - size: 400
 | 
			
		||||
        x_offset: 750
 | 
			
		||||
        y_offset: 250
 | 
			
		||||
        min_person_area: 2000
 | 
			
		||||
  back2:
 | 
			
		||||
    rtsp:
 | 
			
		||||
      user: viewer
 | 
			
		||||
      host: 10.0.10.10
 | 
			
		||||
      port: 554
 | 
			
		||||
      # values that begin with a "$" will be replaced with environment variable
 | 
			
		||||
      password: $RTSP_PASSWORD
 | 
			
		||||
      path: /cam/realmonitor?channel=1&subtype=2
 | 
			
		||||
    mask: back-mask.bmp
 | 
			
		||||
    regions:
 | 
			
		||||
      - size: 350
 | 
			
		||||
        x_offset: 0
 | 
			
		||||
 | 
			
		||||
@ -171,6 +171,13 @@ class Camera:
 | 
			
		||||
        mqtt_publisher = MqttObjectPublisher(self.mqtt_client, self.mqtt_topic_prefix, self.objects_parsed, self.detected_objects)
 | 
			
		||||
        mqtt_publisher.start()
 | 
			
		||||
 | 
			
		||||
        # load in the mask for person detection
 | 
			
		||||
        if 'mask' in self.config:
 | 
			
		||||
            self.mask = cv2.imread("/config/{}".format(self.config['mask']), cv2.IMREAD_GRAYSCALE)
 | 
			
		||||
        else:
 | 
			
		||||
            self.mask = np.zeros((self.frame_shape[0], self.frame_shape[1], 1), np.uint8)
 | 
			
		||||
            self.mask[:] = 255
 | 
			
		||||
    
 | 
			
		||||
    def start(self):
 | 
			
		||||
        self.capture_process.start()
 | 
			
		||||
        # start the object detection prep threads
 | 
			
		||||
@ -207,6 +214,15 @@ class Camera:
 | 
			
		||||
                if region and region['min_person_area'] > person_area:
 | 
			
		||||
                    continue
 | 
			
		||||
            
 | 
			
		||||
                # compute the coordinates of the person and make sure
 | 
			
		||||
                # the location isnt outide the bounds of the image (can happen from rounding)
 | 
			
		||||
                y_location = min(int(obj['ymax']), len(self.mask)-1)
 | 
			
		||||
                x_location = min(int((obj['xmax']-obj['xmin'])/2.0), len(self.mask[0])-1)
 | 
			
		||||
 | 
			
		||||
                # if the person is in a masked location, continue
 | 
			
		||||
                if self.mask[y_location][x_location] == [0]:
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
            self.detected_objects.append(obj)
 | 
			
		||||
 | 
			
		||||
        with self.objects_parsed:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user