From c05dd959e20dcb50d2a8e236a64987070d9fcb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sadam=C2=B7Sadik?= <1903249375@qq.com> Date: Fri, 12 Jan 2024 17:33:17 +0800 Subject: [PATCH 1/2] Implemented a cross-platform solution for sounding alarms. --- main.py | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index 02cc117..6e63a6a 100644 --- a/main.py +++ b/main.py @@ -1,22 +1,26 @@ import cv2 -import winsound -cam = cv2.VideoCapture(1) -while cam.isOpened(): - ret, frame1 = cam.read() - ret, frame2 = cam.read() - diff = cv2.absdiff(frame1, frame2) - gray = cv2.cvtColor(diff, cv2.COLOR_RGB2GRAY) - blur = cv2.GaussianBlur(gray, (5, 5), 0) - _, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY) - dilated = cv2.dilate(thresh, None, iterations=3) - contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) - # cv2.drawContours(frame1, contours, -1, (0, 255, 0), 2) - for c in contours: - if cv2.contourArea(c) < 5000: - continue - x, y, w, h = cv2.boundingRect(c) - cv2.rectangle(frame1, (x, y), (x+w, y+h), (0, 255, 0), 2) - winsound.PlaySound('alert.wav', winsound.SND_ASYNC) - if cv2.waitKey(10) == ord('q'): - break - cv2.imshow('Granny Cam', frame1) \ No newline at end of file +import sounddevice as sd +from scipy.io import wavfile + +if __name__ == '__main__': + cam = cv2.VideoCapture(1) + while cam.isOpened(): + ret, frame1 = cam.read() + ret, frame2 = cam.read() + diff = cv2.absdiff(frame1, frame2) + gray = cv2.cvtColor(diff, cv2.COLOR_RGB2GRAY) + blur = cv2.GaussianBlur(gray, (5, 5), 0) + _, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY) + dilated = cv2.dilate(thresh, None, iterations=3) + contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) + # cv2.drawContours(frame1, contours, -1, (0, 255, 0), 2) + for c in contours: + if cv2.contourArea(c) < 5000: + continue + x, y, w, h = cv2.boundingRect(c) + cv2.rectangle(frame1, (x, y), (x + w, y + h), (0, 255, 0), 2) + fs, data = wavfile.read('alert.wav') + sd.play(data, fs) + if cv2.waitKey(10) == ord('q'): + break + cv2.imshow('Granny Cam', frame1) From b1a3d9e3b8dc7792528da92ac295501aaa717211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sadam=C2=B7Sadik?= Date: Fri, 12 Jan 2024 17:34:26 +0800 Subject: [PATCH 2/2] Added the README doc and requirements.txt. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sadam·Sadik <1903249375@qq.com> --- README.md | 2 ++ requirements.txt | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 README.md create mode 100644 requirements.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..012a401 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# A small OpenCV-based face recognition script. +### 🚨 Alarm sounds when a face is detected. \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e6c63d5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +opencv-python +sounddevice +scipy \ No newline at end of file