12 Commits

Author SHA1 Message Date
Kenneth Estanislao
cbc7c22f1c Create CONTRIBUTING.md 2024-08-13 03:12:58 +08:00
Kenneth Estanislao
a31e81fa66 Update README.md
https://www.reddit.com/r/singularity/comments/1eo4sne/comment/lhl7odv/
2024-08-11 21:59:31 +08:00
Kenneth Estanislao
e8a8acca9f Update README.md 2024-08-11 21:17:04 +08:00
Kenneth Estanislao
a9d4564726 Update README.md
relinking this to the old repo
2024-08-11 21:08:38 +08:00
Kenneth Estanislao
fc47cffb18 Update README.md 2024-08-11 16:35:38 +08:00
Kenneth Estanislao
fff3009c80 Merge pull request #152 from Saharsha-N/patch-1
Update README.md
2024-08-10 22:08:08 +08:00
Saharsha-N
84c10400b9 Update README.md
Fixed a typo.
2024-08-10 09:55:36 -04:00
Kenneth Estanislao
9f58dfeee1 Merge pull request #140 from rahulbansal16/main
Fix this cyclic dependency issue which was coming while installing rquirements
2024-08-10 20:29:59 +08:00
Rahul Bansal
04e72a85c3 Fix this cyclic dependency issue which was coming while doing the pip install requirements. Now the code is working. You are able to run it on your Windows machine. 2024-08-10 17:43:39 +05:30
Kenneth Estanislao
6a17297e2f Update README.md 2024-08-10 14:19:20 +08:00
Kenneth Estanislao
ddd19474da Merge pull request #115 from hacksider/revert-88-main
Revert "Enable to choose a camera device in UI" Will put it on experimental as of this moment
2024-08-10 13:57:37 +08:00
Kenneth Estanislao
d49a77b3a3 Revert "Enable to choose a camera device in UI" 2024-08-10 13:54:12 +08:00
4 changed files with 15 additions and 38 deletions

1
.gitignore vendored
View File

@@ -14,6 +14,7 @@ __pycache__/
.tmp/
temp/
venv/
env/
workflow/
gfpgan/
models/inswapper_128.onnx

1
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1 @@
Please always push on the experimental to ensure we don't mess with the main branch. All the test will be done on the experimental and will be pushed to the main branch after few days of testing.

View File

@@ -135,7 +135,7 @@ Choose a face (image with desired face) and the target image/video (image/video
Just follow the clicks on the screenshot
1. Select a face
2. Click live
3. Wait for a few second (it takes a longer time, usually 10 to 30 seconds before the preview shows up)
3. Wait for a few seconds (it takes a longer time, usually 10 to 30 seconds before the preview shows up)
![demo-gif](demo.gif)
@@ -166,10 +166,14 @@ options:
Looking for a CLI mode? Using the -s/--source argument will make the run program in cli mode.
## Want the Next Update Now?
If you want the latest and greatest build, or want to see some new great features, go to our [experimental branch](https://github.com/hacksider/Deep-Live-Cam/tree/experimental) and experience what the contributors have given.
## Credits
- [henryruhs](https://github.com/henryruhs): for being an irreplaceable contributor to the project
- [ffmpeg](https://ffmpeg.org/): for making video related operations easy
- [deepinsight](https://github.com/deepinsight): for their [insightface](https://github.com/deepinsight/insightface) project which provided a well-made library and models.
- [havok2-htwo](https://github.com/havok2-htwo) : for sharing the code for webcam
- [GosuDRM](https://github.com/GosuDRM/nsfw-roop) : for uncensoring roop
- and all developers behind libraries used in this project.
- and [all developers](https://github.com/hacksider/Deep-Live-Cam/graphs/contributors) behind libraries used in this project.
- Foot Note: [This is originally roop-cam, see the full history of the code here.](https://github.com/hacksider/roop-cam) Please be informed that the base author of the code is [s0md3v](https://github.com/s0md3v/roop)

View File

@@ -101,23 +101,8 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
preview_button = ctk.CTkButton(root, text='Preview', cursor='hand2', command=lambda: toggle_preview())
preview_button.place(relx=0.65, rely=0.80, relwidth=0.2, relheight=0.05)
# --- Camera Selection ---
camera_label = ctk.CTkLabel(root, text="Select Camera:")
camera_label.place(relx=0.4, rely=0.86, relwidth=0.2, relheight=0.05)
available_cameras = get_available_cameras()
# Convert camera indices to strings for CTkOptionMenu
available_camera_strings = [str(cam) for cam in available_cameras]
camera_variable = ctk.StringVar(value=available_camera_strings[0] if available_camera_strings else "No cameras found")
camera_optionmenu = ctk.CTkOptionMenu(root, variable=camera_variable,
values=available_camera_strings)
camera_optionmenu.place(relx=0.65, rely=0.86, relwidth=0.2, relheight=0.05)
live_button = ctk.CTkButton(root, text='Live', cursor='hand2', command=lambda: webcam_preview(int(camera_variable.get())))
live_button.place(relx=0.15, rely=0.86, relwidth=0.2, relheight=0.05)
# --- End Camera Selection ---
live_button = ctk.CTkButton(root, text='Live', cursor='hand2', command=lambda: webcam_preview())
live_button.place(relx=0.40, rely=0.86, relwidth=0.2, relheight=0.05)
status_label = ctk.CTkLabel(root, text=None, justify='center')
status_label.place(relx=0.1, rely=0.9, relwidth=0.8)
@@ -264,18 +249,14 @@ def update_preview(frame_number: int = 0) -> None:
image = ctk.CTkImage(image, size=image.size)
preview_label.configure(image=image)
def webcam_preview(camera_index: int):
def webcam_preview():
if modules.globals.source_path is None:
# No image selected
return
global preview_label, PREVIEW
cap = cv2.VideoCapture(camera_index)
if not cap.isOpened():
update_status(f"Error: Could not open camera with index {camera_index}")
return
cap = cv2.VideoCapture(0) # Use index for the webcam (adjust the index accordingly if necessary)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 960) # Set the width of the resolution
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 540) # Set the height of the resolution
cap.set(cv2.CAP_PROP_FPS, 60) # Set the frame rate of the webcam
@@ -312,14 +293,4 @@ def webcam_preview(camera_index: int):
ROOT.update()
cap.release()
PREVIEW.withdraw() # Close preview window when loop is finished
def get_available_cameras():
"""Returns a list of available camera indices."""
available_cameras = []
for index in range(10): # Check for cameras with index 0 to 9
cap = cv2.VideoCapture(index)
if cap.isOpened():
available_cameras.append(index)
cap.release()
return available_cameras
PREVIEW.withdraw() # Close preview window when loop is finished