I'm trying to perform a bitwise_and between a mask and the input image but the output of cv2.inRange()
is a single channel matrix and the image is a three channel matrix. Thus, the cv2.bitwise_and()
throws an error. Is there a way to convert cv2.inRange()
output to an image format to perform the bitwise_and?
Here's what I have so far:
image = np.array(Image.open('im.png'))
lower_bound = np.array([0, 0, 40], np.uint8)
upper_bound = np.array([40, 255, 255], np.uint8)
hsv_img = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv_img, lower_bound, upper_bound)
res = cv2.bitwise_and(mask, image, mask=None)
Error:
cv2.error: OpenCV(4.5.4) /tmp/pip-req-build-3129w7z7/opencv/modules/core/src/arithm.cpp:212: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and type), nor 'array op scalar', nor 'scalar op array' in function 'binary_op'
source https://stackoverflow.com/questions/72762729/how-to-perform-cv2-bitwise-and-on-cv2-inrange-mask-and-image
Comments
Post a Comment