Remove most nested headers from <vlc_filter.h>
[vlc.git] / modules / video_filter / opencv_example.cpp
index ce10b0d..a7a0bd7 100644 (file)
@@ -3,25 +3,25 @@
  * (performs face identification).  Mostly taken from the facedetect.c
  * OpenCV sample.
  *****************************************************************************
- * Copyright (C) 2006-2012 the VideoLAN team
+ * Copyright (C) 2006-2012 VLC authors and VideoLAN
  * Copyright (C) 2012 Edward Wang
  *
  * Authors: Dugal Harris <dugalh@protoclea.co.za>
  *          Edward Wang <edward.c.wang@compdigitec.com>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 /*****************************************************************************
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_filter.h>
+#include <vlc_picture.h>
 #include <vlc_vout.h>
 #include <vlc_image.h>
 #include "filter_event_info.h"
 
 #include <opencv2/core/core_c.h>
 #include <opencv2/core/core.hpp>
+#include <opencv2/imgproc/imgproc_c.h>
+#include <opencv2/imgproc/imgproc.hpp>
 #include <opencv2/objdetect/objdetect.hpp>
 
 /*****************************************************************************
@@ -72,7 +75,7 @@ vlc_module_begin ()
     add_shortcut( "opencv_example" )
 
     set_category( CAT_VIDEO )
-    set_subcategory( SUBCAT_VIDEO_VFILTER2 )
+    set_subcategory( SUBCAT_VIDEO_VFILTER )
     set_callbacks( OpenFilter, CloseFilter )
 
     add_string( "opencv-haarcascade-file", "c:\\haarcascade_frontalface_alt.xml",
@@ -104,11 +107,11 @@ static int OpenFilter( vlc_object_t *p_this )
 
     //create the VIDEO_FILTER_EVENT_VARIABLE
     vlc_value_t val;
-    if (var_Create( p_filter->p_libvlc, VIDEO_FILTER_EVENT_VARIABLE, VLC_VAR_ADDRESS | VLC_VAR_DOINHERIT ) != VLC_SUCCESS)
+    if (var_Create( p_filter->obj.libvlc, VIDEO_FILTER_EVENT_VARIABLE, VLC_VAR_ADDRESS | VLC_VAR_DOINHERIT ) != VLC_SUCCESS)
         msg_Err( p_filter, "Could not create %s", VIDEO_FILTER_EVENT_VARIABLE);
 
     val.p_address = &(p_sys->event_info);
-    if (var_Set( p_filter->p_libvlc, VIDEO_FILTER_EVENT_VARIABLE, val )!=VLC_SUCCESS)
+    if (var_Set( p_filter->obj.libvlc, VIDEO_FILTER_EVENT_VARIABLE, val )!=VLC_SUCCESS)
         msg_Err( p_filter, "Could not set %s", VIDEO_FILTER_EVENT_VARIABLE);
 
     //OpenCV init specific to this example
@@ -137,7 +140,7 @@ static void CloseFilter( vlc_object_t *p_this )
     free( p_sys->event_info.p_region );
     free( p_sys );
 
-    var_Destroy( p_filter->p_libvlc, VIDEO_FILTER_EVENT_VARIABLE);
+    var_Destroy( p_filter->obj.libvlc, VIDEO_FILTER_EVENT_VARIABLE);
 }
 
 /****************************************************************************
@@ -147,7 +150,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
 {
     IplImage** p_img = NULL;
     CvPoint pt1, pt2;
-    int i, scale = 1;
+    int scale = 1;
     filter_sys_t *p_sys = p_filter->p_sys;
  
     if ((!p_pic) )
@@ -187,7 +190,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         }
 
         //populate the video_filter_region_info_t struct
-        for( i = 0; i < (faces ? faces->total : 0); i++ )
+        for( int i = 0; i < (faces ? faces->total : 0); i++ )
         {
             CvRect *r = (CvRect*)cvGetSeqElem( faces, i );
             pt1.x = r->x*scale;
@@ -202,7 +205,7 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
         }
 
         if (faces && (faces->total > 0))    //raise the video filter event
-            var_TriggerCallback( p_filter->p_libvlc, VIDEO_FILTER_EVENT_VARIABLE );
+            var_TriggerCallback( p_filter->obj.libvlc, VIDEO_FILTER_EVENT_VARIABLE );
     }
     else
         msg_Err( p_filter, "No cascade - is opencv-haarcascade-file valid?" );