Subtração de fundo - OpenCV
A subtração do fundo é uma forma de eliminar o fundo da imagem. Para conseguir isso, extraímos o primeiro plano em movimento do fundo estático.
Background Subtraction tem vários casos de uso no dia a dia, está sendo usado para segmentação de objetos, reforço de segurança, rastreamento de pedestres, contagem do número de visitantes, número de veículos no trânsito etc. É capaz de aprender e identificar a máscara de primeiro plano.
No OpenCV, temos 3 algoritmos para fazer esta operação -
BackgroundSubtractorMOG - É um algoritmo de segmentação de fundo / primeiro plano baseado em mistura gaussiana.
BackgroundSubtractorMOG2 - também é um algoritmo de segmentação de fundo / primeiro plano baseado em mistura gaussiana. Fornece melhor adaptabilidade a cenas variadas devido a mudanças de iluminação, etc.
BackgroundSubtractorGMG - Este algoritmo combina estimativa estatística de imagem de fundo e segmentação bayesiana por pixel.
Como aplicar as funções embutidas do OpenCV para subtração de fundo -
Etapa # 1 - Criar um objeto para representar o algoritmo que estamos usando para subtração de fundo.
Etapa 2 - Aplicar backgroundsubtractor.apply()
função na imagem.
import
numpy as np
import
cv2
fgbg1
=
cv2.bgsegm.createBackgroundSubtractorMOG();
fgbg2
=
cv2.createBackgroundSubtractorMOG2();
fgbg3
=
cv2.bgsegm.createBackgroundSubtractorGMG();
cap
=
cv2.VideoCapture(
0
);
while
(
1
):
ret, img
=
cap.read();
fgmask1
=
fgbg1.
apply
(img);
fgmask2
=
fgbg2.
apply
(img);
fgmask3
=
fgbg3.
apply
(img);
cv2.imshow(
'Original'
, img);
cv2.imshow(
'MOG'
, fgmask1);
cv2.imshow(
'MOG2'
, fgmask2);
cv2.imshow(
'GMG'
, fgmask3);
k
=
cv2.waitKey(
30
) &
0xff
;
if
k
=
=
27
:
break
;
cap.release();
cv2.destroyAllWindows();
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva