В вашем коде mask
, который является двоичным изображением, используется для определения / получения области, которую вы хотите в изображении. Рассмотрим
I2=cv2.bitwise_and(I1,mask)
Поскольку mask
является двоичным, это то, что произойдет: везде mask
установлено на 0
, изображение I2
будет равно 0. Однако везде mask
при значении 1
изображение I2
будет сохранять то же содержимое, что и I1
.
Теперь, как указывало @ MH304, mask_inv
просто и изображение определяется следующим образом (используя binary_not
):
mask_inv[i,j]=0 <=> mask[i,j]=1
mask_inv[i,j]=1 <=> mask[i,j]=0
#or equivalently, mask_inv[i,j]=1-mask[i,j]
Таким образом, выполнение
I3=cv2.bitwise_and(I1,mask_inv)
будет означать, что I3
сохранит все, что вы сбросили с I1
, чтобы сформировать I2
ранее. Точно так же I3
откажется от всего, что вы использовали с I1
для формирования I2
. В некотором смысле I2
и I3
являются дополнениями ( например forground / background).