diff options
author | Vanessa Chipirrás Navalón <vchipirras6@gmail.com> | 2015-08-17 17:47:42 +0200 |
---|---|---|
committer | Luis de Bethencourt <luis@debethencourt.com> | 2015-08-18 12:24:21 +0100 |
commit | 00a55d1a6915b21db58e481ed48c10afbcd0e675 (patch) | |
tree | b3a5638a55cee4c5bde393fdfdf2d963cd9df9c8 | |
parent | a452ce40996e76ad264c230b50ff176fc4b84f29 (diff) | |
download | gstreamer-plugins-bad-00a55d1a6915b21db58e481ed48c10afbcd0e675.tar.gz |
handdetect: code refactoring of gst_handdetect_load_profile.
Change gst_handdetect_load_profile() so it can be used generically.
https://bugzilla.gnome.org/show_bug.cgi?id=752528
-rw-r--r-- | ext/opencv/gsthanddetect.c | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/ext/opencv/gsthanddetect.c b/ext/opencv/gsthanddetect.c index 762f5fb9e..1ea247af3 100644 --- a/ext/opencv/gsthanddetect.c +++ b/ext/opencv/gsthanddetect.c @@ -113,7 +113,8 @@ static gboolean gst_handdetect_set_caps (GstOpencvVideoFilter * transform, static GstFlowReturn gst_handdetect_transform_ip (GstOpencvVideoFilter * transform, GstBuffer * buffer, IplImage * img); -static void gst_handdetect_load_profile (GstHanddetect * filter); +static CvHaarClassifierCascade *gst_handdetect_load_profile (GstHanddetect * + filter, gchar * profile); static void gst_handdetect_navigation_interface_init (GstNavigationInterface * iface); @@ -270,7 +271,10 @@ gst_handdetect_init (GstHanddetect * filter) filter->roi_height = 0; filter->display = TRUE; - gst_handdetect_load_profile (filter); + filter->cvCascade_fist = + gst_handdetect_load_profile (filter, filter->profile_fist); + filter->cvCascade_palm = + gst_handdetect_load_profile (filter, filter->profile_palm); gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter), TRUE); @@ -286,12 +290,14 @@ gst_handdetect_set_property (GObject * object, guint prop_id, case PROP_PROFILE_FIST: g_free (filter->profile_fist); filter->profile_fist = g_value_dup_string (value); - gst_handdetect_load_profile (filter); + filter->cvCascade_fist = + gst_handdetect_load_profile (filter, filter->profile_fist); break; case PROP_PROFILE_PALM: g_free (filter->profile_palm); filter->profile_palm = g_value_dup_string (value); - gst_handdetect_load_profile (filter); + filter->cvCascade_palm = + gst_handdetect_load_profile (filter, filter->profile_palm); break; case PROP_DISPLAY: filter->display = g_value_get_boolean (value); @@ -602,26 +608,18 @@ gst_handdetect_transform_ip (GstOpencvVideoFilter * transform, return GST_FLOW_OK; } -static void -gst_handdetect_load_profile (GstHanddetect * filter) +static CvHaarClassifierCascade * +gst_handdetect_load_profile (GstHanddetect * filter, gchar * profile) { - GST_DEBUG_OBJECT (filter, "Loading profiles...\n"); - filter->cvCascade_fist = - (CvHaarClassifierCascade *) cvLoad (filter->profile_fist, 0, 0, 0); - filter->cvCascade_palm = - (CvHaarClassifierCascade *) cvLoad (filter->profile_palm, 0, 0, 0); - if (!filter->cvCascade_fist || !filter->cvCascade_palm) - GST_WARNING_OBJECT (filter, - "WARNING: Could not load HAAR classifier cascade: %s.\n", - filter->profile_fist); - else - GST_DEBUG_OBJECT (filter, "Loaded profile %s\n", filter->profile_fist); - if (!filter->cvCascade_palm) - GST_WARNING_OBJECT (filter, - "WARNING: Could not load HAAR classifier cascade: %s.\n", - filter->profile_palm); - else - GST_DEBUG_OBJECT (filter, "Loaded profile %s\n", filter->profile_palm); + CvHaarClassifierCascade *cascade; + + if (profile == NULL) + return NULL; + if (!(cascade = (CvHaarClassifierCascade *) cvLoad (profile, 0, 0, 0))) { + GST_WARNING_OBJECT (filter, "Couldn't load Haar classifier cascade: %s.", + profile); + } + return cascade; } /* Entry point to initialize the plug-in |