Invisible Cloak of Potter With Python
by theAkash2509 in Circuits > Software
999 Views, 7 Favorites, 0 Comments
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 any colored clothes with some minute changes in the code and create that magical effect .
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
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.
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.
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()
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 .