Introduction: Invisible Cloak of Potter With Python
Who does not want to acquire super power? Super power of being INVISIBLE? YES you can do so with just a few lines of codes .So what are you waiting for ? Prepare yourself for the surprise . Lets get started.......
Its a simple computer vision technique which create a magical effect . The technique is called color detection and segmentation. Here we will be using Red colored cloth to use as a cloak . You can also use green or blue or anycolored clothes with some minute changes in the code and create that magical effect .
Step 1: Install Python
First You have to make sure that you have python installed in your device , might be python 3 or have Jupyter Notebook . I have done my project in Jupyter Notebook. It provides a simple browser based IDE for python to do your coding stuffs.
You can download from this link - https://www.anaconda.com/products/individual
Step 2: Install OpenCV
After that you have to install OpenCV . Open Jupyter Notebook and write the following command to install the required OpenCV modules :-
pip install opencv-python
I have already installed OpenCV , so it is showing :- Requirement already satisfied.
Step 3: Algorithm to Be Used
- Give some time to Capture the background frame.
Now detection of red/green/blue color using color detection and segmentation algo.
Segment out the red/green/blue colored cloth .
Now show the final magical output.
Step 4: Magical Code
#Invisible Cloak By A.D import numpy as np import cv2 import time capture=cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*'XVID') final = cv2.VideoWriter('pOtterF.avi' , fourcc, 20.0, (640,480)) time.sleep(2) background = 0 #capture the background for i in range(30): ret, background = capture.read()#capture the image while(capture.isOpened()): ret, img = capture.read() if not ret: break hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #for red lower_red = np.array([0,120,70]) upper_red = np.array([20,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) #for Green comment out the above 6 lines of code for red color and use the following three lines # lower_green = np.array([25,52,72]) # upper_green = np.array([102,255,255]) # mask1 = cv2.inRange(hsv , lower_green , upper_green) #for blue comment out the above 6 lines of code for red color and use the following three lines #lower_blue = np.array([94, 80, 2]) #upper_blue = np.array([126, 255, 255]) #mask1 = cv2.inRange(hsv , lower_blue , upper_blue) mask1=mask1+mask2 # for green and blue remove this line mask1=cv2.morphologyEx(mask1, cv2.MORPH_OPEN ,np.ones((3,3) , np.uint8) , iterations=2) mask1=cv2.morphologyEx(mask1, cv2.MORPH_DILATE ,np.ones((3,3) , np.uint8) , iterations=1) mask2 = cv2.bitwise_not(mask1) res1 = cv2.bitwise_and(background, background, mask=mask1) res2 = cv2.bitwise_and(img, img, mask=mask2) final_output = cv2.addWeighted(res1 , 1, res2 , 1 , 0) final.write(final_output) cv2.imshow('pOtterF' , final_output) if cv2.waitKey(1) & 0xFF == ord('q'): #press 'q' to close the window break capture.release() final.release() cv2.destroyAllWindows()
Step 5: Now Enjoy the Magic
After you run the code wait for some time for the web cam to capture the background. Then you enter the scene with your RED/GREEN/BLUE cloak and enjoy the super power of being invisible .