void Image_Thread::Procesador_imagen(const QImage &image)
{
    if(!cierre)
    {
        //procesa la imagen
        qDebug() << "Procesando la imagen";

        // Pasa la imagen de Qimage a cv::Mat para ser procesada por opencv
        cv::Mat img = QtOcv::image2Mat(image);

        // Sustracción del fondo:
        (*backgroundSubtractor)(img, foregroundMask);
        // Operaciones morfolóficas para eliminar las regiones de
        // pequeño tamaño. Erode() las encoge y dilate() las vuelve a
        // agrandar.
        cv::erode(foregroundMask, foregroundMask, cv::Mat(),cv::Point(-1,-1),3);
        cv::dilate(foregroundMask, foregroundMask, cv::Mat(),cv::Point(-1,-1),3);
        // Obtener los contornos que bordean las regiones externas
        // (CV_RETR_EXTERNAL) encontradas.
        ContoursType contours;
        cv::findContours(foregroundMask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

        //Pasa el vector de contornos(rect) a vector de Qrect
       VRect.clear();
       for (ContoursType::const_iterator i = contours.begin(); i < contours.end(); ++i)
       {
            cv::Rect recta = cv::boundingRect(*i);
            QRect qrecta(recta.x,recta.y,recta.width,recta.height);
            VRect.push_back(qrecta);
       }
        qDebug() << "Imagen procesada";
        //manda la imagen ya procesada al hilo principal
        emit Mandar_imagen(image,VRect);
    }
}
void Procesadora :: recibir_imagen(const QImage& imagen ) {

     //qDebug() << Q_FUNC_INFO << QThread::currentThreadId();

         // channels == 0 significa autodetección
         cv::Mat imagenmat= QtOcv::image2Mat(imagen);

         // std::vector<cv::Mat> images = <vector de imágenes en cv::Mat>

         // Definimos algunos tipos para que el código se lea mejor
         typedef std::vector<cv::Mat> ImagesType;
         typedef std::vector<std::vector<cv::Point> > ContoursType;

         // Instancia de la clase del sustractor de fondo
         // cv::BackgroundSubtractorMOG2(history=500,
         //                              varThreshold=16,
         //                              bShadowDetection=true)

             // Sustracción del fondo:
             //  1. El objeto sustractor compara la imagen en i con su
             //     estimación del fondo y devuelve en foregroundMask una
             //     máscara (imagen binaria) con un 1 en los píxeles de
             //     primer plano.
             //  2. El objeto sustractor actualiza su estimación del fondo
             //     usando la imagen en i.
             cv::Mat foregroundMask;
             backgroundSubtractor(imagenmat, foregroundMask);

             // Operaciones morfolóficas para eliminar las regiones de
             // pequeño tamaño. Erode() las encoge y dilate() las vuelve a
             // agrandar.
             cv::erode(foregroundMask, foregroundMask, cv::Mat());
             cv::dilate(foregroundMask, foregroundMask, cv::Mat());

             // Obtener los contornos que bordean las regiones externas
             // (CV_RETR_EXTERNAL) encontradas. Cada contorno es un vector
             // de puntos y se devuelve uno por región en la máscara.

             ContoursType contours;
             cv::findContours(foregroundMask, contours, CV_RETR_EXTERNAL,
                              CV_CHAIN_APPROX_NONE);

             //Qvect vector
              cv::Rect rect;


              QVector<QRect> vector_rectangulo;

               qRegisterMetaType< QVector<QRect> >("QVector<QRect>");

              for( ContoursType::const_iterator i = contours.begin() ; i < contours.end(); i++){
                    rect = cv::boundingRect(*i);
                    QRect rect1(rect.x, rect.y,rect.width, rect.height);
                    vector_rectangulo.push_back(rect1);
              }

             // Aquí va el código ódigo que usa los contornos encontrados...
             // P. ej. usar  para obtener el cuadro
             // delimitador de cada uno y pintarlo en la imagen original

     emit devolver_senal(imagen,vector_rectangulo); // se devuelve la imagen y el vector de rectangulos




 }