I am facing some issues with my motion detector sensor in Python. I have looked at this issue in other communities, but the solution did not worked for me. The program opens perfectly without any error, but when it is supposed to show the camera, it shows blank screen. I have followed a YouTube tutorials, but it works for him, and it does not work for me. Can somebody tell me what is wrong with my code? Thank you
YouTube tutorial link: https://www.youtube.com/watch?v=QPjPyUJeY
import threading
import winsound
import cv2
import imutils
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
_, start_frame = cap.read()
start_frame = imutils.resize(start_frame, width=500)
start_frame = cv2.cvtColor(start_frame, cv2.COLOR_BGR2GRAY)
start_frame = cv2.GaussianBlur(start_frame, (21, 21), 0)
alarm = False
alarm_mode = False
alarm_counter = False
def beep_alarm():
global alarm
for _ in range(5):
if not alarm_mode:
break
print("Alarm is turning on...")
winsound.beep(2500, 1000)
alarm = False
while True:
_, frame = cap.read()
frame = imutils.resize(frame, width=500)
if alarm_mode:
frame_bw = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame_bw = cv2.GaussianBlur(frame_bw, (5, 5), 0)
difference = cv2.absdiff(frame_bw, start_frame)
threshold = cv2.threshold(difference, 25, 255,
cv2.THRESH_BINARY)[1]
start_frame = frame_bw
if threshold.sum() > 300:
alarm_counter += 1
else:
if alarm_counter > 0:
alarm_counter -= 1
cv2.imshow("Cam", threshold)
else:
cv2.imshow("Cam", frame)
if alarm_counter > 20:
if not alarm:
alarm = True
threading.Thread(target=beep_alarm).start()
key_pressed = cv2.waitKey(30)
if key_pressed == ord("t"):
alarm_mode = not alarm_mode
alarm_counter = 0
if key_pressed == ord("q"):
alarm_mode = False
break
cap.release()
cv2.destroyAllWindows()
Image of the errorImage of the issue
source https://stackoverflow.com/questions/75778633/python-is-not-responding-motion-sensor
Comments
Post a Comment