Skip to content

Commit

Permalink
Merge pull request #26 from blakeblackshear/mask
Browse files Browse the repository at this point in the history
add the ability to mask the standing location of a person
  • Loading branch information
blakeblackshear authored May 1, 2019
2 parents 3e803b6 + 4dacf02 commit f95d8b6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 21 deletions.
Binary file added config/back-mask.bmp
Binary file not shown.
22 changes: 1 addition & 21 deletions config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ cameras:
# 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
Expand All @@ -26,24 +27,3 @@ cameras:
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
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
16 changes: 16 additions & 0 deletions frigate/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,13 @@ def __init__(self, name, config, prepped_frame_queue, mqtt_client, mqtt_prefix):
# start a thread to publish object scores (currently only person)
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()
Expand Down Expand Up @@ -206,6 +213,15 @@ def add_objects(self, objects):
# detected person, don't add it to detected objects
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)

Expand Down

0 comments on commit f95d8b6

Please sign in to comment.