Invisible Cloak
Invisible cloak Program with python
You must watch Harry Potter Movie. In movie, Harry Potter have Invisible Cloak which is used for invisible. We will try to make same program.
You must watch Harry Potter Movie. In movie, Harry Potter have Invisible Cloak which is used for invisible. We will try to make same program.
For create program, we need small python code and OpenCV library.
For installing OpenCV library used below command.
Open cmd and run below command.
pip install opencv-python
I am using jupyter notebook for write python program. you can run any editor for run python.
If you use pip, you can install it with:
pip install jupyterlab
you can install notebook
pip install notebook
For run jypyter
jupyter notebook
Go to Browser and type.
http://localhost:8888/ and create new program click on new
Program Step:
Importing OpenCV libraries and save the program result video
Recording and caching the background.
Detecting the assign color (RED) portion in frame which need to invisible.
Replacing the RED color portion with a background image.
Producing the invisible result
close Program by using 'a'
##Invisible Cloak
##Dated 19-07-2020, Shamsher Singh
##Import cv2, time, Numpy
import cv2
import time
import numpy as np
## Output vedio location and type
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('C:\Python\output.avi',fourcc,20.0, (640, 480))
##start the webcam and read
cap = cv2.VideoCapture(0)
## Allow the system to sleep for 5 seconds before the webcam starts
time.sleep(5)
count = 0
background = 0
## Save the background
for i in range(60):
ret,background = cap.read()
background = np.flip(background,axis=1)
## Read frame from the webcam, until the camera is open
while(cap.isOpened()):
ret, img = cap.read()
if not ret:
break
count+=1
img = np.flip(img,axis=1)
## Convert the color space from BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
## Generat masks to detect red color
lower_red = np.array([0,120,50])
upper_red = np.array([10,255,255])
mask1 = cv2.inRange(hsv,lower_red,upper_red)
lower_red = np.array([170,120,70])
upper_red = np.array([180,255,255])
mask2 = cv2.inRange(hsv,lower_red,upper_red)
mask1 = mask1+mask2
## Open and Delete the mask image
mask1 = cv2.morphologyEx(mask1, cv2.MORPH_OPEN, np.ones((3,3),np.uint8))
mask1 = cv2.morphologyEx(mask1, cv2.MORPH_DILATE, np.ones((3,3),np.uint8))
## Create an covered mask to segment out the red color
mask2 = cv2.bitwise_not(mask1)
## Segment the red color part out of the frame and covered mask
res1 = cv2.bitwise_and(img,img,mask=mask2)
## Create image showing static background frame pixels only for the masked region
res2 = cv2.bitwise_and(background, background, mask = mask1)
## Generating the final output and writing
finalOutput = cv2.addWeighted(res1,1,res2,1,0)
out.write(finalOutput)
cv2.imshow("Invisible Cloak",finalOutput)
# Wait for 'a' key to stop the program
if cv2.waitKey(1) & 0xFF == ord('a'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
Output Video : C:\Python\output.avi