Часть извлечения изображения, соответствующая маске в OpenCV

В OpenCV приложение с Pythonу меня есть маска и RGB изображение, я хочу извлечь часть изображения, которая соответствует маске, но я не знаю как.

например это маска: введите описание изображения здесь

и я хочу сделать так: введите описание изображения здесь

я сделаю это:

temp = cv2.bitwise_and(img ,img, mask=feature_map)

но это дает мне и ошибку

cv2.error: /Users/mee/opencv/modules/core/src/arithm.cpp:1589: error: (-215) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function binary_op

2 ответа

Решение

Вы можете сделать что-то вроде:

mask = cv2.imread('mask.png',0)
im = cv2.imread('guy.png')
mask_inv =  255 - mask;
final_im = mask_inv*im

Вы должны преобразовать свою маску, так как значение пикселей маски объекта равно 255, а значение пикселей фона равно 0. После этого вы можете применить и операцию, или операцию умножения для каждого цветового канала изображения RGB с новой маской.

Другие вопросы по тегам