2015-12-25 2 views
4

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

, например, это маска: enter image description here

и я хочу сделать так: enter image description here

я это сделать:

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 
+1

У меня нет настройки, чтобы попробовать сейчас, но чувствуется как '(mtype == CV_8U || mtype == CV_8S)' part говорит, что ваша маска должна быть 'CV_8UC3'. – seleciii44

+1

Используйте copyTo для черного инициализированного изображения, с перевернутой маской – Miki

+2

@ seleciii44 Я ожидал бы, что маска будет единственным каналом, но я думаю, что ваше наблюдение за типом правильное. Я также ожидал, что маска будет инвертирована перед нанесением на изображение. – beaker

ответ

3

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

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

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

Смежные вопросы