# Object Detection Realtime
import numpy as np
import cv2
blob_params = cv2.SimpleBlobDetector_Params()
blob_params.minThreshold = 10
blob_params.maxThreshold = 100
blob_params.filterByArea = True
blob_params.minArea = 1500
blob_params.filterByCircularity = True
blob_params.minCircularity = 0.1
blob_params.filterByConvexity = True
blob_params.minConvexity = 0.87
blob_params.filterByInertia = True
blob_params.minInertiaRatio = 0.01
# Set this to 255 to detect bright objects
# blob_params.blobColor = 255
blob_detector = cv2.SimpleBlobDetector_create(blob_params)
body_cascade = cv2.CascadeClassifier('haarcascade_upperbody.xml')
if body_cascade.empty():
body_cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
body_loaded = body_cascade and not body_cascade.empty()
face_loaded = face_cascade and not face_cascade.empty()
eye_loaded = eye_cascade and not eye_cascade.empty()
cascades_loaded = body_loaded and face_loaded and eye_loaded
cap = cv2.VideoCapture(1)
if not cap.isOpened():
cap = cv2.VideoCapture(0)
if not cap.isOpened():
exit(1)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while(True):
ret, img = cap.read()
#frame = cv2.flip(frame, -1) # Flip camera vertically
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blobs = blob_detector.detect(img)
cv2.drawKeypoints(img, blobs, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
for kp in blobs:
cv2.circle(img, (int(kp.pt[0]), int(kp.pt[1])), int(kp.size), (0, 0, 255))
if cascades_loaded:
bodies = body_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in bodies:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,255),2)
print("body")
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,255),2)
print("face")
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for(ex,ey,ew,eh) in eyes:
cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(255,255,0),2)
print("eye")
cv2.imshow('frame', img)
cv2.imshow('gray', gray)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
Comments