mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
add support for polygon masks
This commit is contained in:
parent
69406343ee
commit
1ce993051e
@ -140,9 +140,10 @@ cameras:
|
|||||||
# fps: 5
|
# fps: 5
|
||||||
|
|
||||||
################
|
################
|
||||||
## Optional mask. Must be the same aspect ratio as your video feed. Value is either the
|
## Optional mask. Must be the same aspect ratio as your video feed. Value is any of the following:
|
||||||
## name of a file in the config directory or a base64 encoded bmp image prefixed with
|
## - name of a file in the config directory
|
||||||
## 'base64,' eg. 'base64,asfasdfasdf....'.
|
## - base64 encoded image prefixed with 'base64,' eg. 'base64,asfasdfasdf....'
|
||||||
|
## - polygon of x,y coordinates prefixed with 'poly,' eg. 'poly,0,900,1080,900,1080,1920,0,1920'
|
||||||
##
|
##
|
||||||
## The mask works by looking at the bottom center of the bounding box for the detected
|
## The mask works by looking at the bottom center of the bounding box for the detected
|
||||||
## person in the image. If that pixel in the mask is a black pixel, it ignores it as a
|
## person in the image. If that pixel in the mask is a black pixel, it ignores it as a
|
||||||
|
@ -202,6 +202,12 @@ def track_camera(name, config, frame_queue, frame_shape, detection_queue, detect
|
|||||||
img = base64.b64decode(config['mask'][7:])
|
img = base64.b64decode(config['mask'][7:])
|
||||||
npimg = np.fromstring(img, dtype=np.uint8)
|
npimg = np.fromstring(img, dtype=np.uint8)
|
||||||
mask = cv2.imdecode(npimg, cv2.IMREAD_GRAYSCALE)
|
mask = cv2.imdecode(npimg, cv2.IMREAD_GRAYSCALE)
|
||||||
|
elif config['mask'].startswith('poly,'):
|
||||||
|
points = config['mask'].split(',')[1:]
|
||||||
|
contour = np.array([[int(points[i]), int(points[i+1])] for i in range(0, len(points), 2)])
|
||||||
|
mask = np.zeros((frame_shape[0], frame_shape[1]), np.uint8)
|
||||||
|
mask[:] = 255
|
||||||
|
cv2.fillPoly(mask, pts=[contour], color=(0))
|
||||||
else:
|
else:
|
||||||
mask = cv2.imread("/config/{}".format(config['mask']), cv2.IMREAD_GRAYSCALE)
|
mask = cv2.imread("/config/{}".format(config['mask']), cv2.IMREAD_GRAYSCALE)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user