Skip to content

drish08/Invisible-cloak-using-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Invisible-cloak-using-Python

import cv2 import numpy as np import time

replace the red pixels ( or undesired area ) with

background pixels to generate the invisibility feature.

1. Hue: This channel encodes color information. Hue can be

thought of an angle where 0 degree corresponds to the red color,

120 degrees corresponds to the green color, and 240 degrees

corresponds to the blue color.

2. Saturation: This channel encodes the intensity/purity of color.

For example, pink is less saturated than red.

3. Value: This channel encodes the brightness of color.

Shading and gloss components of an image appear in this

channel reading the videocapture video

in order to check the cv2 version

print(cv2.version)

taking video.mp4 as input.

Make your path according to your needs

capture_video = cv2.VideoCapture("video.mp4")

give the camera to warm up

time.sleep(1) count = 0 background = 0

capturing the background in range of 60

you should have video that have some seconds

dedicated to background frame so that it

could easily save the background image

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

background = np.flip(background, axis = 1) # flipping of the frame

we are reading from video

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

# convert the image - BGR to HSV
# as we focused on detection of red color

# converting BGR to HSV for better
# detection or you can convert it to gray
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

#-------------------------------------BLOCK----------------------------#
# ranges should be carefully chosen
# setting the lower and upper range for mask1
lower_red = np.array([100, 40, 40])	
upper_red = np.array([100, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)
# setting the lower and upper range for mask2
lower_red = np.array([155, 40, 40])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)
#----------------------------------------------------------------------#

# the above block of code could be replaced with
# some other code depending upon the color of your cloth
mask1 = mask1 + mask2

# Refining the mask corresponding to the detected red color
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)

# Generating the final output
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)

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published