打开简历-215:断言失败!emptydetectMultiScale

问题描述

我正在制作人脸识别门锁。 从RaspBerry Pi到摄像机的视频数据已发送到我的服务器。 使用detectMultiScale函数从django接收到的数据已通过face_detected进行了检测,但已确认haarcascade_frontalface_default.xml已正确加载为,但无法正常工作。

请帮助我 这是我的代码

-djnago代码-

-djnago code-
face_detector = cv2.CascadeClassifier('haarcascades\haarcascade_frontalface_default.xml')
def recvall(sock,count):
    buf = b''
    while count:
        newbuf = sock.recv(count)
        if not newbuf: return None
        buf += newbuf
        count -= len(newbuf)
    return buf

class streaming_pi_camera(object):
    def __init__(self):
        HOST='my ip'
        PORT=8485
        global s
        s=socket.socket(socket.AF_INET,socket.soCK_STREAM)
        s.bind((HOST,PORT))
        s.listen(10)
        print('Socket Ready')
        global conn
        conn,addr=s.accept()
        
    def __del__(self):
        conn.close()
        s.close()
        cv2.destroyAllWindows()
    
    def get_frame(self):
        while True:
            length = recvall(conn,16)
            stringData = recvall(conn,int(length))
            frame = cv2.imdecode(np.fromstring(stringData,dtype=np.uint8),cv2.IMREAD_COLOR)
            
            gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
            print(face_detector)
            faces_detected = face_detector.detectMultiScale(gray,scaleFactor=1.3,minNeighbors=5)
            for (x,y,w,h) in faces_detected:
                cv2.rectangle(frame,pt1=(x,y),pt2=(x + w,y + h),color=(255,0),thickness=2)
            
            ret,jpeg = cv2.imencode('.jpg',frame)
            return jpeg.tobytes()

`





-respBerry pi code-

import cv2
import socket
import numpy as np


while True: 
    s = socket.socket(socket.AF_INET,socket.soCK_STREAM)
    s.connect(('my ip',8485))
     
    cam = cv2.VideoCapture(0)
     
    cam.set(3,640);
    cam.set(4,480);
     
    encode_param = [int(cv2.IMWRITE_JPEG_QUALITY),100]
     
    while True:
        ret,frame = cam.read()
     
        result,frame = cv2.imencode('.jpg',frame,encode_param)

        data = np.array(frame)
        stringData = data.tostring()
    
        s.sendall((str(len(stringData))).encode().ljust(16) + stringData)
     
    cam.release()
    print("restart")

这是错误代码

[07 / Oct / 2020 21:40:47]“ GET / picamera / HTTP / 1.1” 200 1055 插座就绪 追溯(最近一次通话): 运行中的文件“ C:\ Program Files(x86)\ Microsoft Visual Studio \ Shared \ python37_64 \ lib \ wsgiref \ handlers.py”,行138 self.finish_response()

文件“ C:\ Program Files(x86)\ Microsoft Visual Studio \ Shared \ python37_64 \ lib \ wsgiref \ handlers.py”,行183,位于finish_response中 对于self.result中的数据:

文件“ C:\ Users \ ShinJaeHong \ Desktop \ University \졸업작품\ django \ face_project \ picamera \ views.py”,第13行,在convert_video中 frame = picamera.get_frame()

get_frame中的第56行,文件“ C:\ Users \ ShinJaeHong \ Desktop \ University \졸업작품\ django \ face_project \ picamera \ picamera.py” faces_detected = face_detector.detectMultiScale(灰色,scaleFactor = 1.3,minNeighbors = 5)

cv2.error:OpenCV(4.4.0)C:\ Users \ appveyor \ AppData \ Local \ Temp \ 1 \ pip-req-build-q0nmoxxv \ opencv \ modules \ objdetect \ src \ cascadedetect.cpp:1689:错误:(-215:断言失败)函数'cv :: CascadeClassifier :: detectMultiScale'中的!empty()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)