我们之前搞到了xml文件,这里不想多说咧,直接啪嗒啪嗒,上代码
coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = 'F S'
# __date__ = '2018/7/28'
# __Desc__ = 人脸检测小例子,以圆圈圈出人脸
#import cv2.cv as cv
import cv2
import numpy as np
import socket
import time
import sy
s
from PIL import Image
from cv2 import VideoCapture
cap = cv2.VideoCapture(0)
by
cap.set(3,320)# set Width
cap.set(4,240)# set Height
SERVER_IP = "192.168.4.1"
SERVER_PORT = 8888
print("Starting socket: TCP...")
server_addr = (SERVER_IP, SERVER_PORT)
socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Starting socket: TCP...")
server_addr = (SERVER_IP, SERVER_PORT)
socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 待检测的图片路径
face_cascade = cv2.CascadeClassifier(r'/home/pi/Desktop/opencv-master/data/haarcascades_cuda/haarcascade_frontalface_alt.xml')
signal_cascade = cv2.CascadeClassifier(r'/home/pi/Desktop/cascade.xml')
while True:
try:
print("Connecting to server @ %s:%d..." %(SERVER_IP, SERVER_PORT))
socket_tcp.connect(server_addr)
break
except Exception:
print("Can't connect to server, try it latter!")
time.sleep(1)
continue
print("Receiving package...")
while (True) :
ret,frame = cap.read()
frame = cv2.flip(frame,-1)# Flip camera vertically
gray=frame
#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 探测图片中的人脸
faces = face_cascade.detectMultiScale(
gray,
scaleFactor = 1.20,
minNeighbors = 4,
minSize = (4,4),
flags = 0
)a
signs = signal_cascade.detectMultiScale(
gray,
scaleFactor = 1.20,
minNeighbors = 4,
minSize = (4,4),
flags = 0
)
if len(faces) > 0:
print "发现{0}个人脸!".format(len(faces))
try:
if len(faces) == 1 : sa
socket_tcp.send("FROLEF")
elif len(faces) == 2 :
socket_tcp.send("BACKWA")
else :
print("WRONGG")
time.sleep(1)
except Exception:
socket_tcp.close()
socket_tcp = None
sys.exit(1)
if len(signs) > 0:
print "发现{0}个signs!".format(len(signs))
try:
if len(signs) == 1 :
socket_tcp.send("THREEE")
else :
print("WRONGg")
time.sleep(1)
except Exception:
socket_tcp.close()
socket_tcp = None
sys.exit(1)
for(x,y,w,h) in faces:
# cv2.rectangle(gray,(x,y),(x+w,y+w),(0,255,0),2)
#if w > 50 and h > 50 :
cv2.circle(gray,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)
print x,y,w,h
for(x,y,w,h) in signs:
# cv2.rectangle(gray,(x,y),(x+w,y+w),(0,255,0),2)
#if w > 50 and h > 50 :
cv2.circle(gray,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)
print x,y,w,h
cv2.imshow("Find Faces!",gray)
k = cv2.waitKey(30)
if k ==27:# press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()