My job is to mask the hand gestures from the RGB image into a binary image. Only the hand gesture should be shown in the resultant image. I have coded so far
import cv2 import numpy as np from PIL import Image, ImageCms from skimage.draw import rectangle im = image = cv2.imread("E:\JU_V2_DIGIT\RGB_Crop\RGB_P3_G7_5.png") mask = np.ones(shape=im.shape[0:2], dtype="bool") gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# blur the image
blur = cv2.blur(gray, (3, 3))
# binary thresholding of the image
ret, thresh = cv2.threshold(blur, 210, 255, cv2.THRESH_BINARY) # ret, thresh = cv2.threshold(gray, 127, 255,0) cv2.imshow("Thresholded",thresh) # find contours # contours, hierarchy = cv2.findContours(thresh,2,1) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) # cc cnt = sorted(contours, key=cv2.contourArea, reverse=True) # ROI will be object with biggest contour m = cnt[0] print(m)
draw contours and hull points
for i in range(len(contours)):
color_contours = (0, 255, 0) # color for contours color = (255, 255, 255) # color for convex hull
Know the coordinates of the bounding box of the ROI
x, y, w, h = cv2.boundingRect(m) print(x) print(y) print(w) print(h) rr, cc = rectangle(start=(y, y+h), end=(x, x+w-1))
print(rr) mask[rr, cc] = False
Apply the mask and display the result
im[mask] = 0 cv2.imshow(im) cv2.waitKey(10)
It shows the following error and also the result is not got.
File "C:/Users/Shrouti/PycharmProjects/homography/Scorecard.py", line 39, in <module> mask[rr, cc] = False IndexError: index 256 is out of bounds for axis 1 with size 256