问题描述
我正在制作人脸识别门锁。
从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 (将#修改为@)