Add more groups to argparse
This commit is contained in:
parent
5af2b24fe4
commit
9e39132506
|
@ -15,16 +15,35 @@ def set_argparse():
|
|||
else:
|
||||
print("No .env file found")
|
||||
|
||||
|
||||
# One important thing to consider is that most function parameters are optional and have a default value
|
||||
# However, with argparse, those are never used since a argparse always passes something, even if it's None
|
||||
argparser = argparse.ArgumentParser(
|
||||
prog="Wyzely Detect",
|
||||
description="Recognize faces/objects in a video stream (from a webcam or a security camera) and send notifications to your devices", # noqa: E501
|
||||
epilog=":)",
|
||||
)
|
||||
|
||||
# One important thing to consider is that most function parameters are optional and have a default value
|
||||
# However, with argparse, those are never used since a argparse always passes something, even if it's None
|
||||
|
||||
argparser.add_argument(
|
||||
video_options = argparser.add_argument_group("Video Options")
|
||||
stream_source = video_options.add_mutually_exclusive_group()
|
||||
stream_source.add_argument(
|
||||
"--rtsp-url",
|
||||
default=os.environ["RTSP_URL"]
|
||||
if "RTSP_URL" in os.environ and os.environ["RTSP_URL"] != ""
|
||||
else None, # noqa: E501
|
||||
type=str,
|
||||
help="RTSP camera URL",
|
||||
)
|
||||
stream_source.add_argument(
|
||||
"--capture-device",
|
||||
default=os.environ["CAPTURE_DEVICE"]
|
||||
if "CAPTURE_DEVICE" in os.environ and os.environ["CAPTURE_DEVICE"] != ""
|
||||
else 0, # noqa: E501
|
||||
type=int,
|
||||
help="Capture device number",
|
||||
)
|
||||
video_options.add_argument(
|
||||
"--run-scale",
|
||||
# Set it to the env RUN_SCALE if it isn't blank, otherwise set it to 0.25
|
||||
default=os.environ["RUN_SCALE"]
|
||||
|
@ -34,7 +53,7 @@ def set_argparse():
|
|||
type=float,
|
||||
help="The scale to run the detection at, default is 0.25",
|
||||
)
|
||||
argparser.add_argument(
|
||||
video_options.add_argument(
|
||||
"--view-scale",
|
||||
# Set it to the env VIEW_SCALE if it isn't blank, otherwise set it to 0.75
|
||||
default=os.environ["VIEW_SCALE"]
|
||||
|
@ -45,7 +64,7 @@ def set_argparse():
|
|||
help="The scale to view the detection at, default is 0.75",
|
||||
)
|
||||
|
||||
argparser.add_argument(
|
||||
video_options.add_argument(
|
||||
"--no-display",
|
||||
default=os.environ["NO_DISPLAY"]
|
||||
if "NO_DISPLAY" in os.environ and os.environ["NO_DISPLAY"] != ""
|
||||
|
@ -54,69 +73,7 @@ def set_argparse():
|
|||
help="Don't display the video feed",
|
||||
)
|
||||
|
||||
argparser.add_argument(
|
||||
"--object-confidence-threshold",
|
||||
default=os.environ["OBJECT_CONFIDENCE_THRESHOLD"]
|
||||
if "OBJECT_CONFIDENCE_THRESHOLD" in os.environ
|
||||
and os.environ["OBJECT_CONFIDENCE_THRESHOLD"] != ""
|
||||
else 0.6,
|
||||
type=float,
|
||||
help="The confidence threshold to use",
|
||||
)
|
||||
argparser.add_argument(
|
||||
"--face-confidence-threshold",
|
||||
default=os.environ["FACE_CONFIDENCE_THRESHOLD"]
|
||||
if "FACE_CONFIDENCE_THRESHOLD" in os.environ
|
||||
and os.environ["FACE_CONFIDENCE_THRESHOLD"] != ""
|
||||
else 0.3,
|
||||
type=float,
|
||||
help="The confidence (currently cosine similarity) threshold to use for face recognition",
|
||||
)
|
||||
argparser.add_argument(
|
||||
"--faces-directory",
|
||||
default=os.environ["FACES_DIRECTORY"]
|
||||
if "FACES_DIRECTORY" in os.environ and os.environ["FACES_DIRECTORY"] != ""
|
||||
else "faces",
|
||||
type=str,
|
||||
help="The directory to store the faces. Can either contain images or subdirectories with images, the latter being the preferred method", # noqa: E501
|
||||
)
|
||||
argparser.add_argument(
|
||||
"--no-remove-representations",
|
||||
default=os.environ["NO_REMOVE_REPRESENTATIONS"]
|
||||
if "NO_REMOVE_REPRESENTATIONS" in os.environ
|
||||
and os.environ["NO_REMOVE_REPRESENTATIONS"] != ""
|
||||
else False,
|
||||
action="store_true",
|
||||
help="Don't remove representations_<model>.pkl at the start of the program. Greatly improves startup time, but doesn't take into account changes to the faces directory since it was created", # noqa: E501
|
||||
)
|
||||
argparser.add_argument(
|
||||
"--detect-object",
|
||||
nargs="*",
|
||||
default=[],
|
||||
type=str,
|
||||
help="The object(s) to detect. Must be something the model is trained to detect",
|
||||
)
|
||||
|
||||
stream_source = argparser.add_mutually_exclusive_group()
|
||||
stream_source.add_argument(
|
||||
"--rtsp-url",
|
||||
default=os.environ["RTSP_URL"]
|
||||
if "RTSP_URL" in os.environ and os.environ["RTSP_URL"] != ""
|
||||
else None, # noqa: E501
|
||||
type=str,
|
||||
help="The RTSP URL to use",
|
||||
)
|
||||
stream_source.add_argument(
|
||||
"--capture-device",
|
||||
default=os.environ["CAPTURE_DEVICE"]
|
||||
if "CAPTURE_DEVICE" in os.environ and os.environ["CAPTURE_DEVICE"] != ""
|
||||
else 0, # noqa: E501
|
||||
type=int,
|
||||
help="The capture device to use",
|
||||
)
|
||||
|
||||
# Defaults for the stuff here and down are already set in notify.py.
|
||||
# Setting them here just means that argparse will display the default values as defualt
|
||||
notifcation_services = argparser.add_argument_group("Notification Services")
|
||||
notifcation_services.add_argument(
|
||||
"--ntfy-url",
|
||||
|
@ -153,6 +110,56 @@ def set_argparse():
|
|||
type=int,
|
||||
help="The time (seconds) before another notification can be sent",
|
||||
)
|
||||
|
||||
|
||||
face_recognition = argparser.add_argument_group("Face Recognition options")
|
||||
face_recognition.add_argument(
|
||||
"--faces-directory",
|
||||
default=os.environ["FACES_DIRECTORY"]
|
||||
if "FACES_DIRECTORY" in os.environ and os.environ["FACES_DIRECTORY"] != ""
|
||||
else "faces",
|
||||
type=str,
|
||||
help="The directory to store the faces. Can either contain images or subdirectories with images, the latter being the preferred method", # noqa: E501
|
||||
)
|
||||
face_recognition.add_argument(
|
||||
"--face-confidence-threshold",
|
||||
default=os.environ["FACE_CONFIDENCE_THRESHOLD"]
|
||||
if "FACE_CONFIDENCE_THRESHOLD" in os.environ
|
||||
and os.environ["FACE_CONFIDENCE_THRESHOLD"] != ""
|
||||
else 0.3,
|
||||
type=float,
|
||||
help="The confidence (currently cosine similarity) threshold to use for face recognition",
|
||||
)
|
||||
face_recognition.add_argument(
|
||||
"--no-remove-representations",
|
||||
default=os.environ["NO_REMOVE_REPRESENTATIONS"]
|
||||
if "NO_REMOVE_REPRESENTATIONS" in os.environ
|
||||
and os.environ["NO_REMOVE_REPRESENTATIONS"] != ""
|
||||
else False,
|
||||
action="store_true",
|
||||
help="Don't remove representations_<model>.pkl at the start of the program. Greatly improves startup time, but doesn't take into account changes to the faces directory since it was created", # noqa: E501
|
||||
)
|
||||
|
||||
|
||||
|
||||
object_detection = argparser.add_argument_group("Object Detection options")
|
||||
object_detection.add_argument(
|
||||
"--detect-object",
|
||||
nargs="*",
|
||||
default=[],
|
||||
type=str,
|
||||
help="The object(s) to detect. Must be something the model is trained to detect",
|
||||
)
|
||||
object_detection.add_argument(
|
||||
"--object-confidence-threshold",
|
||||
default=os.environ["OBJECT_CONFIDENCE_THRESHOLD"]
|
||||
if "OBJECT_CONFIDENCE_THRESHOLD" in os.environ
|
||||
and os.environ["OBJECT_CONFIDENCE_THRESHOLD"] != ""
|
||||
else 0.6,
|
||||
type=float,
|
||||
help="The confidence threshold to use",
|
||||
)
|
||||
|
||||
# return argparser
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue