OSError: [WinError 10038] Попытка работать с элементом, отличным от сокета - PullRequest
0 голосов
/ 18 марта 2020

У меня проблема, когда я выполняю этот код, я получаю эту ошибку! Кто-нибудь может мне помочь?

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] Попытка работать с предметом, отличным от розетки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...