import numpy as np
import cv2


body_cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')

#sudo modprobe bcm2835-v4l2 -> to enable the pi camera for opencv
cap = cv2.VideoCapture(0)


if cap.isOpened():
    print ('Camera is open')
else:
    print ('Camera is not open')

while 1:
    
    # Take each frame
    ret, frame = cap.read()
    
    # Rotate the image 180 degree
    frame=cv2.flip(frame, -1)
    
    #For color conversion, we use the function cv2.cvtColor(input_image, flag) where flag determines the type of conversion.
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    bodies = body_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30,30))

    for (x,y,w,h) in bodies:
        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]

    cv2.imshow('frame',frame)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()
