First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

asked Mar 17 '0

titli gravatar image

Need to mask the region of interest from RGB image

image description

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

click to hide/show revision 2
None

updated Mar 17 '0

berak gravatar image

Need to mask the region of interest from RGB image

image description

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)

cv2.COLOR_BGR2GRAY)

        # blur the image

blur = cv2.blur(gray, (3, 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)

print(m) # draw contours and hull points

points # for i in range(len(contours)):

range(len(contours)): color_contours = (0, 255, 0) # color for contours color = (255, 255, 255) # color for convex hull

hull # Know the coordinates of the bounding box of the ROI

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))

x+w-1)) print(rr) mask[rr, cc] = False

False # Apply the mask and display the result

result im[mask] = 0 cv2.imshow(im) cv2.waitKey(10)

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

256