2010-01-08 32 views
7

Quiero hacer restas de fondo en un archivo de video usando el método OpenCV. Ahora mismo puedo hacer restas de fondo, pero el problema es que no pude obtener la salida en modo de color. Toda la salida después de restar el fondo viene en modo de color en escala de grises :(. Quiero obtener la información de color de primer plano que es la salida resultante después de fondo consiguió resta.Substracción de fondo eficiente con OpenCV

¿Puedo hacerlo utilizando el enmascaramiento técnica? ? como el siguiente procedimiento que estoy pensando en

  1. de captura de entrada -. InputFrame (RGB)
  2. Proceso InputFrame
  3. Reste fondo, tienda de primer plano en TempFrame (que viene en gris escala :()
  4. crear una máscara utilizando TempFrame
  5. Aplicar la máscara creada para la InputFrame
  6. Obtener primer plano de color como OutFrame

me sorprende con hacer el enmascaramiento usando OpenCV. Solo soy un principiante en OpenCV. Por favor, ayúdame a superar esto.

Gracias de antemano.

Respuesta

10

Bien, no entiendo cómo TempFrame (su primer plano) podría ser en escala de grises si está utilizando la sustracción de fondo. Debes estar usando un algoritmo muy especial. Pero suponiendo TempFrame es en escala de grises, entonces usted podría hacer esto:

cv::Mat mask = tempFrame > 0.5; 

cv::Mat outFrame; 
capturedFrame.copyTo(outFrame, mask); 

Ese es el código de OpenCV 2.0 anterior. El número 0.5 es un umbral, tendrás que configurarlo para algo apropiado. Si no está usando imágenes de punto flotante, probablemente lo configure en 128 o algo así. Esta es la misma cosa en OpenCV 1.1 código:

CvMat* mask = cvCreateMat(tempFrame.rows, tempFrame.cols, CV_8UC1); 
cvCmpS(tempFrame, 0.5, mask); 

CvMat* outFrame = cvCreateMat(capturedFrame.rows, capturedFrames.cols, CV_32FC3); 
cvCopy(capturedFrame, outFrame, mask); 
+0

Gracias, pero aún me pregunto por qué todos los ejemplos y códigos de BGS que encuentro en Internet generan solo resultados en escala de grises. De todos modos ... Gracias de nuevo. – Jabez

+0

Oh bien, supongo que es más fácil hacer restas de fondo con escala de grises, así que tal vez por eso. –