diff --git a/apps/DeepFaceLive/backend/CameraSource.py b/apps/DeepFaceLive/backend/CameraSource.py index 13c7471..cf65c64 100644 --- a/apps/DeepFaceLive/backend/CameraSource.py +++ b/apps/DeepFaceLive/backend/CameraSource.py @@ -55,12 +55,15 @@ class _DriverType(IntEnum): DSHOW = 0 MSMF = 1 GSTREAMER = 2 + OPENCV = 3 _DriverType_names = { _DriverType.DSHOW : 'DirectShow', _DriverType.MSMF : 'Microsoft Media Foundation', _DriverType.GSTREAMER : 'GStreamer', + _DriverType.OPENCV : 'OpenCV', } + class _RotationType(IntEnum): ROTATION_0 = 0 ROTATION_90 = 1 @@ -112,6 +115,7 @@ class CameraSourceWorker(BackendWorker): cv_api = {_DriverType.DSHOW: cv2.CAP_DSHOW, _DriverType.MSMF: cv2.CAP_MSMF, _DriverType.GSTREAMER: cv2.CAP_GSTREAMER, + _DriverType.OPENCV: 0, }[state.driver] vcap = cv2.VideoCapture(state.device_idx, cv_api) diff --git a/build/linux/README.md b/build/linux/README.md index a47de96..ff368cb 100644 --- a/build/linux/README.md +++ b/build/linux/README.md @@ -12,4 +12,9 @@ git clone DeepFaceLive cd DeepFaceLive/build/linux/ # start.sh builds and runs container with proper options, then example.sh will start DeepFaceLive with example options ./start.sh + +Usage of ./start.sh +# -d specify a folder for DeepFaceLive data (videos, models, etc) +-d /home/user/DeepFaceLive_data +# -c will pass through existing video devices such as /dev/video0 and /dev/video1, etc ``` diff --git a/build/linux/start.sh b/build/linux/start.sh index 159983f..8f7e889 100755 --- a/build/linux/start.sh +++ b/build/linux/start.sh @@ -1,5 +1,33 @@ #!/bin/bash + +DATA_FOLDER=$(pwd)/data/ +declare CAM0 CAM1 CAM2 CAM3 +printf "\n" +while getopts 'cd:h' opt; do + case "$opt" in + c) + printf "Starting with camera devices\n" + test -e /dev/video0 && CAM0="--device=/dev/video0:/dev/video0" + test -e /dev/video1 && CAM1=--device=/dev/video1:/dev/video1 + test -e /dev/video2 && CAM2=--device=/dev/video2:/dev/video2 + test -e /dev/video3 && CAM3=--device=/dev/video3:/dev/video3 + echo $CAM0 $CAM1 $CAM2 $CAM3 + ;; + d) + DATA_FOLDER="$OPTARG" + printf "Starting with data folder: %s\n" "$DATA_FOLDER" + ;; + + ?|h) + printf "Usage:\n$(basename $0) [-d] /path/to/your/data/folder\n" + exit 1 + ;; + esac +done +shift "$(($OPTIND -1))" +printf "\n" + # Warning xhost + is overly permissive and will reduce system security. Edit as desired docker build . -t deepfacelive xhost + -docker run --ipc host --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $(pwd)/data/:/data/ --rm -it deepfacelive +docker run --ipc host --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $DATA_FOLDER:/data/ $CAM0 $CAM1 $CAM2 $CAM3 --rm -it deepfacelive