From f93e704b21f6053c95d65078fa261614ec123c14 Mon Sep 17 00:00:00 2001 From: Sauravroy34 Date: Wed, 1 May 2024 21:19:47 +0530 Subject: [PATCH 1/2] added auto scroll feature --- scripts/Auto_scroller/Readme.md | 12 ++ scripts/Auto_scroller/main.finger_scroll.py | 46 +++++ scripts/Auto_scroller/main_nose_scroll.py | 58 +++++++ scripts/Auto_scroller/requirments.txt | 183 ++++++++++++++++++++ 4 files changed, 299 insertions(+) create mode 100644 scripts/Auto_scroller/Readme.md create mode 100644 scripts/Auto_scroller/main.finger_scroll.py create mode 100755 scripts/Auto_scroller/main_nose_scroll.py create mode 100644 scripts/Auto_scroller/requirments.txt diff --git a/scripts/Auto_scroller/Readme.md b/scripts/Auto_scroller/Readme.md new file mode 100644 index 0000000..d4de757 --- /dev/null +++ b/scripts/Auto_scroller/Readme.md @@ -0,0 +1,12 @@ +# Your Auto Scroller +hey you tired of using your hands and mouse for scroling?
+if yes then you are at the right spot here is gift from me to save your hand + +## Instructions + make sure you piped all the modules from requirments.txt +
+ `pip install requirments.txt` +
+now run this main.py file in your terminal and use head gestures for scroling +
+ diff --git a/scripts/Auto_scroller/main.finger_scroll.py b/scripts/Auto_scroller/main.finger_scroll.py new file mode 100644 index 0000000..c89dc71 --- /dev/null +++ b/scripts/Auto_scroller/main.finger_scroll.py @@ -0,0 +1,46 @@ +import mediapipe as mp +import pyautogui as pd +import cv2 +height = 480 +width = 640 + + + + +dix =1920 +diy =1080 +cap = cv2.VideoCapture(0) + +while True: + state , frame = cap.read() + frame = cv2.flip(frame,1) + frame = cv2.resize(frame,(640,480)) + + + + new_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) + with mp.solutions.hands.Hands(max_num_hands = 1,min_detection_confidence=0.3) as hands: + results = hands.process(new_frame) + + if results.multi_hand_landmarks: + for handmarker in results. multi_hand_landmarks: + landmarks = handmarker.landmark[8] + + x =int(landmarks.x * 1980) + y =int(landmarks.y * 1100) + z = int(landmarks.z * 100) + if y <400: + pd.scroll(5) + + if y >590: + pd.scroll(-5) + + + + + + cv2.imshow("frame",frame) + + if cv2.waitKey(2) & 0xFF == ord("d"): + break +cv2.destroyAllWindows() \ No newline at end of file diff --git a/scripts/Auto_scroller/main_nose_scroll.py b/scripts/Auto_scroller/main_nose_scroll.py new file mode 100755 index 0000000..23029fd --- /dev/null +++ b/scripts/Auto_scroller/main_nose_scroll.py @@ -0,0 +1,58 @@ +import cv2 +import mediapipe as mp +import pyautogui as pd + + +face_mesh = mp.solutions.face_mesh.FaceMesh(max_num_faces=1) + +frame_width = 640 +frame_height = 480 + +cap = cv2.VideoCapture(0) + +while True: + + _, frame = cap.read() + + frame = cv2.flip(frame,1) + frame = cv2.resize(frame, (frame_width, frame_height)) + + + new_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) + + + output = face_mesh.process(new_frame) + landmarks_points = output.multi_face_landmarks + + + if landmarks_points: + landmarks = landmarks_points[0].landmark + + + x = int(landmarks[1].x * frame_width) + y = int(landmarks[1].y * frame_height) + if y < 200: + pd.press("up") + elif y>250: + pd.press("down") + if x > 320: + pd.press("right") + + + elif x < 180: + + pd.press("left") + + + + + + cv2.imshow("face", frame) + + + if cv2.waitKey(2) & 0xFF == ord("d"): + break + + +cap.release() +cv2.destroyAllWindows() diff --git a/scripts/Auto_scroller/requirments.txt b/scripts/Auto_scroller/requirments.txt new file mode 100644 index 0000000..8369f7b --- /dev/null +++ b/scripts/Auto_scroller/requirments.txt @@ -0,0 +1,183 @@ +absl-py==2.0.0 +aiohttp==3.8.5 +aiosignal==1.3.1 +apturl==0.5.2 +asttokens==2.2.1 +async-timeout==4.0.3 +attrs==23.1.0 +backcall==0.2.0 +bcrypt==3.2.0 +beautifulsoup4==4.12.2 +blinker==1.4 +boto3==1.28.30 +botocore==1.31.30 +Brlapi==0.8.3 +bs4==0.0.1 +caer==2.0.8 +certifi==2020.6.20 +cffi==1.16.0 +chardet==4.0.0 +charset-normalizer==3.2.0 +click==8.0.3 +colorama==0.4.4 +comm==0.1.4 +command-not-found==0.3 +contourpy==1.1.1 +cryptography==3.4.8 +cupshelpers==1.0 +cycler==0.12.0 +dataclasses-json==0.5.14 +dbus-python==1.2.18 +debugpy==1.6.7 +decorator==5.1.1 +defer==1.0.6 +discord==2.3.2 +discord.py==2.3.2 +distlib==0.3.4 +distro==1.7.0 +distro-info==1.1+ubuntu0.1 +duplicity==0.8.21 +EasyProcess==1.1 +entrypoint2==1.1 +et-xmlfile==1.1.0 +exceptiongroup==1.1.3 +executing==1.2.0 +fasteners==0.14.1 +filelock==3.6.0 +flatbuffers==23.5.26 +fonttools==4.43.1 +frozenlist==1.4.0 +future==0.18.2 +greenlet==2.0.2 +httplib2==0.20.2 +idna==3.3 +importlib-metadata==4.6.4 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.14.0 +jedi==0.19.0 +jeepney==0.7.1 +jmespath==1.0.1 +jupyter_client==8.3.0 +jupyter_core==5.3.1 +keyring==23.5.0 +kiwisolver==1.4.5 +langchain==0.0.264 +langsmith==0.0.22 +language-selector==0.1 +launchpadlib==1.10.16 +lazr.restfulclient==0.14.4 +lazr.uri==1.0.6 +lockfile==0.12.2 +louis==3.20.0 +lxml==4.9.3 +macaroonbakery==1.3.1 +marshmallow==3.20.1 +matplotlib==3.8.0 +matplotlib-inline==0.1.6 +mediapipe==0.10.5 +monotonic==1.6 +more-itertools==8.10.0 +MouseInfo==0.1.3 +mss==9.0.1 +multidict==6.0.4 +mypy==1.5.1 +mypy-extensions==1.0.0 +nest-asyncio==1.5.7 +netifaces==0.11.0 +numexpr==2.8.5 +numpy==1.25.2 +oauthlib==3.2.0 +olefile==0.46 +openai==0.27.8 +openapi-schema-pydantic==1.2.4 +opencv-contrib-python==4.8.1.78 +opencv-python==4.8.0.76 +openpyxl==3.1.2 +packaging==23.1 +pandas==2.0.3 +paramiko==2.9.3 +parso==0.8.3 +pexpect==4.8.0 +pickleshare==0.7.5 +Pillow==10.0.0 +pipenv==11.9.0 +platformdirs==3.10.0 +pluggy==1.2.0 +prompt-toolkit==3.0.39 +protobuf==3.12.4 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +PyAutoGUI==0.9.54 +pycairo==1.20.1 +pycparser==2.21 +pycryptodome==3.18.0 +pycups==2.0.1 +pydantic==1.10.12 +PyDirectInput==1.0.4 +pydirectinput-rgx==2.0.8 +PyGetWindow==0.0.9 +Pygments==2.15.1 +PyGObject==3.42.1 +PyJWT==2.3.0 +pymacaroons==0.13.0 +PyMsgBox==1.0.9 +PyNaCl==1.5.0 +pyope==0.2.2 +pyparsing==2.4.7 +PyPDF2==3.0.1 +pyperclip==1.8.2 +PyRect==0.2.0 +pyRFC3339==1.1 +pyscreenshot==3.1 +PyScreeze==0.1.29 +PySide6==6.5.2 +PySide6-Addons==6.5.2 +PySide6-Essentials==6.5.2 +pytest==7.4.0 +python-apt==2.4.0+ubuntu2 +python-dateutil==2.8.2 +python-debian==0.1.43+ubuntu1.1 +python-dotenv==1.0.0 +python3-xlib==0.15 +pytweening==1.0.7 +pytz==2022.1 +pyxdg==0.27 +PyYAML==5.4.1 +pyzmq==25.1.0 +reportlab==3.6.8 +requests==2.25.1 +s3transfer==0.6.2 +secret==0.8 +SecretStorage==3.3.1 +shiboken6==6.5.2 +six==1.16.0 +sounddevice==0.4.6 +soupsieve==2.4.1 +SQLAlchemy==2.0.19 +stack-data==0.6.2 +systemd-python==234 +tabulate==0.9.0 +tenacity==8.2.3 +tomli==2.0.1 +tornado==6.3.2 +tqdm==4.66.1 +traitlets==5.9.0 +typing-inspect==0.9.0 +typing_extensions==4.7.1 +tzdata==2023.3 +ubuntu-advantage-tools==8001 +ubuntu-drivers-common==0.0.0 +ufw==0.36.1 +unattended-upgrades==0.1 +urllib3==1.26.5 +usb-creator==0.3.7 +virtualenv==20.13.0+ds +virtualenv-clone==0.3.0 +wadllib==1.3.6 +wcwidth==0.2.6 +xdg==5 +xkit==0.0.0 +yarl==1.9.2 +zipp==1.0.0 From 01a53fbbeedd88f9321842556b8d31d72a61483b Mon Sep 17 00:00:00 2001 From: Sauravroy34 Date: Wed, 1 May 2024 21:20:56 +0530 Subject: [PATCH 2/2] added author name --- scripts/Auto_scroller/Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/Auto_scroller/Readme.md b/scripts/Auto_scroller/Readme.md index d4de757..a5c6054 100644 --- a/scripts/Auto_scroller/Readme.md +++ b/scripts/Auto_scroller/Readme.md @@ -9,4 +9,5 @@ if yes then you are at the right spot here is gift from me to save your hand
now run this main.py file in your terminal and use head gestures for scroling
+Author - Saurav Kumar Roy (https://github.com/Sauravroy34)