Python - EL PROGRAMA SE CIERRA DE FORMA AUTOMATICA...

 
Vista:

EL PROGRAMA SE CIERRA DE FORMA AUTOMATICA...

Publicado por Danni Dominguez (2 intervenciones) el 02/05/2022 19:09:00
hola, buenas tardes, soy nuevo en la programacion de python, y estoy desarrollando un proyecto que detecte si una persona lleva mascarillas o no. Me guie de varios tutoriales y al final pude obtener el proposito (detectar si una persona lleva puesta una mascarilla o no), sin embargo, al momento de ejecutarlo, este funciona por unos segundos y se cierra de forma automatica, y me aparece el siguiente mensaje:
---face_image = cv2.cvtColor(face_image, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'---
debo aclarar que trate de buscar en otros blogs, pero solo me indican que la ruta de las imagenes podria estar mal, que deberia copiar la ruta completa, pero fue asi que lo hice, y dudo que ese sea el problema...
Cuando la camara identifica una sola persona, es capaz de detectar si esta persona lleva puesta una mascarilla o no, pero si aparece una segunda persona delante la camara, el programa se cierra y aparece el mensaje de arriba....
alguien podria decirme cual podria ser la causa de este problema..??
por favor....
gracias de antemano....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

EL PROGRAMA SE CIERRA DE FORMA AUTOMATICA...

Publicado por tincopasan (1082 intervenciones) el 02/05/2022 21:21:14
es dificil con solo eso, pero da la sensación que estás asignando a una función el resultado de convertir de color a grices, por lo tanto la segunda vez es imposible dicha conversión porque está en grices y no en color, igual como dije es solo una suposición, no adivino que haces con el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EL PROGRAMA SE CIERRA DE FORMA AUTOMATICA...

Publicado por Danni Dominguez (2 intervenciones) el 03/05/2022 02:47:52
el codigo es el siguiente:


import cv2
import os
import mediapipe as mp
import winsound

mp_face_detection = mp.solutions.face_detection

LABELS = ["Con_mascarilla", "Sin_mascarilla"]

# Leer el modelo
face_mask = cv2.face.LBPHFaceRecognizer_create()
face_mask.read("modelo_entrenamiento.xml")

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

with mp_face_detection.FaceDetection(
min_detection_confidence=0.5) as face_detection:

while True:
ret, frame = cap.read()
if ret == False: break
frame = cv2.flip(frame, 1)

height, width, _ = frame.shape
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = face_detection.process(frame_rgb)

if results.detections is not None:
for detection in results.detections:
xmin = int(detection.location_data.relative_bounding_box.xmin * width)
ymin = int(detection.location_data.relative_bounding_box.ymin * height)
w = int(detection.location_data.relative_bounding_box.width * width)
h = int(detection.location_data.relative_bounding_box.height * height)
if xmin < 0 and ymin < 0:
continue
#cv2.rectangle(frame, (xmin, ymin), (xmin + w, ymin + h), (0, 255, 0), 5)

face_image = frame[ymin : ymin + h, xmin : xmin + w]
face_image = cv2.cvtColor(face_image, cv2.COLOR_BGR2GRAY)
face_image = cv2.resize(face_image, (72, 72), interpolation=cv2.INTER_CUBIC)

result = face_mask.predict(face_image)
#cv2.putText(frame, "{}".format(result), (xmin, ymin - 5), 1, 1.3, (210, 124, 176), 1, cv2.LINE_AA)

if result[1] < 134:
color = (0, 255, 0) if LABELS[result[0]] == "Con_mascarilla" else (0, 0, 255)
cv2.putText(frame, "{}".format(LABELS[result[0]]), (xmin, ymin - 15), 2, 1, color, 1, cv2.LINE_AA)
cv2.rectangle(frame, (xmin, ymin), (xmin + w, ymin + h), color, 2)
#winsound.PlaySound("C:/Users/Daniel/Desktop/Detector de Mascarillas/Audio2.wav", winsound.SND_ASYNC)


cv2.imshow("Frame", frame)
k = cv2.waitKey(1)
if k == 27:
break

cap.release()
cv2.destroyAllWindows()

como dije, el programa funciona bien, pero a los segundos de funcionar, se corta y aparece el mensaje que habia mencionado en el principio...o se corta cuando aparece una segunda persona delante de la camara....y no me explico el porque....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar