У меня проблема, когда я выполняю этот код, я получаю эту ошибку! Кто-нибудь может мне помочь?
import socket
import time
import cv2
import numpy as np
from time import sleep
from tensorflow.keras.preprocessing.image import img_to_array
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 13000 # The port used by the server
conto = 0
face_classifier = cv2.CascadeClassifier('./Haarcascades/haarcascade_frontalface_default.xml')
def face_detector(img):
# Convert image to grayscale
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
faces = face_classifier.detectMultiScale(gray, 1.1, 5)
if faces is ():
return (0,0,0,0), np.zeros((48,48), np.uint8), img
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
try:
roi_gray = cv2.resize(roi_gray, (48, 48), interpolation = cv2.INTER_AREA)
except:
return (x,w,y,h), np.zeros((48,48), np.uint8), img
return (x,w,y,h), roi_gray, img
cap = cv2.VideoCapture(0)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
while True:
ret, frame = cap.read()
rect, face, image = face_detector(frame)
if np.sum([face]) != 0.0:
roi = face.astype("float") / 255.0
roi = img_to_array(roi)
roi = np.expand_dims(roi, axis=0)
# make a prediction on the ROI, then lookup the class
preds = classifier.predict(roi)[0]
label = class_labels[preds.argmax()]
label_position = (rect[0] + int((rect[1]/2)), rect[2] + 25)
cv2.putText(image, label, label_position , cv2.FONT_HERSHEY_SIMPLEX,2, (0,255,0), 3)
s.sendall(b, label +' &')
time.sleep(3)
else:
cv2.putText(image, "No Face Found", (20, 60) , cv2.FONT_HERSHEY_SIMPLEX,2, (0,255,0), 3)
s.sendall(b'noFace &')
time.sleep(3)
cv2.imshow('All', image)
if cv2.waitKey(1) == 13: #13 is the Enter Key
break
s.shutdown(socket.SHUT_RDWR)
s.close()
cap.release()
cv2.destroyAllWindows()
ОШИБКА:
Отслеживание OSError (последний вызов был последним) в 53 случаях: 54 cv2.putText (изображение, «Лицо не найдено», (20, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,255,0), 3) ---> 55 с.sendall (b'noFace & ') 56 time.sleep (3) 57
OSError: [WinError 10038] Попытка работать с предметом, отличным от розетки