2016-04-26 3 views
0

Я хочу назначить значения предыдущего кадра, где значения в следующем кадре равна нулюПрисвоение значений пикселов изображения

if (n_image(:,:,1)==0 && n_image(:,:,2)==0 && n_image(:,:,3)==0) 
       n_image(:,:,1)=grabbed_image(:,:,1); 
       n_image(:,:,2)=grabbed_image(:,:,2); 
       n_image(:,:,3)=grabbed_image(:,:,3); 
end 

ОШИБКА:

Operands to the || and && operators must be convertible to logical scalar values.

ответ

1

Вы путаете логические условия с логической индексации

to_replace = all(n_image == 0, 3); %// logical index for pixels to be replaces 
n_image = bsxfun(@times, n_image, ~to_replace) + bsxfun(@times, grabbed_image, to_replace); 

Использование индексации вместо умножения

to_replace = to_replace(:,:,[1 1 1]); %// replicate logical indices to channel dimension 
n_image(to_replace) = grabbed_image(to_replace); 
+0

что первая линия делает? –

+0

@HrishabhPrajapati ищет все пиксели, которые равны нулю по третьему измерению. – Shai

+0

@ Shai Я пытаюсь использовать свой код, я получаю объект, но (на пикселях), где значение равно 0 Я получаю белый фон, а не предыдущий фон. –

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