import cv2
import numpy as np
import time

from numpy.lib.shape_base import _make_along_axis_idx


capture_video = cv2.VideoCapture("video.mp4")
time.sleep(1)
count = 0
backgorund = 0

for i in range(60):
    return_val, backgorund = capture_video.read()
    if return_val == False:
        continue

backgorund = np.flip(backgorund, axis=1)

while(capture_video.isOpened()):
    return_val, img = capture_video.read()

    if not return_val:
        break
    count += 1
    img = np.flip(img, axis=1)

    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

    lower_end = np.array([100, 40, 40])
    upper_end = np.array([100, 255, 255])
    mask1 = cv2.inRange(hsv, lower_end, upper_end)

    mask1 += mask2
    mask1 = cv2.morphologyEx(mask1, cv2.MORPH_OPEN,
                             np.ones((3, 3), np.uint8), iterations=2)
    mask1 = cv2.dilate(mask1, np.ones((3, 3), np.uint8), iterations=1)
    mask2 = cv2.bitwise_not(mask1)

    res1 = cv2.bitwise_and(backgorund, backgorund, mask=mask1)
    res2 = cv2.bitwise_and(img, img, mask=img)
    final_output = cv2.addWeighted(res1, 1, res2, 1, 0)

    cv2.imshow("INVISIBLE MAN", final_output)
    k = cv2.waitKey(10)
    if k == 27:
        break
