From 6bc00355b813b6bd9b10111edf2c03fd4a4a6e90 Mon Sep 17 00:00:00 2001 From: Luis de Bethencourt <luisbg@osg.samsung.com> Date: Tue, 29 Sep 2015 13:52:47 +0100 Subject: [PATCH] opencv: cvlaplace: add scale and shift properties Add scale and shift properties so these can be used to tweak the values used in cvConvertScale() instead of using only defaults. --- ext/opencv/gstcvlaplace.c | 31 +++++++++++++++++++++++++++++-- ext/opencv/gstcvlaplace.h | 2 ++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ext/opencv/gstcvlaplace.c b/ext/opencv/gstcvlaplace.c index 5b956189f1..e1ef50efe8 100644 --- a/ext/opencv/gstcvlaplace.c +++ b/ext/opencv/gstcvlaplace.c @@ -83,10 +83,14 @@ enum enum { PROP_0, - PROP_APERTURE_SIZE + PROP_APERTURE_SIZE, + PROP_SCALE, + PROP_SHIFT }; #define DEFAULT_APERTURE_SIZE 3 +#define DEFAULT_SCALE_FACTOR 1.0 +#define DEFAULT_SHIFT 0.0 G_DEFINE_TYPE (GstCvLaplace, gst_cv_laplace, GST_TYPE_OPENCV_VIDEO_FILTER); @@ -143,6 +147,14 @@ gst_cv_laplace_class_init (GstCvLaplaceClass * klass) g_param_spec_int ("aperture-size", "aperture size", "Size of the extended Laplace Kernel (1, 3, 5 or 7)", 1, 7, DEFAULT_APERTURE_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SCALE, + g_param_spec_double ("scale", "scale factor", + "Scale factor", 0.0, G_MAXDOUBLE, + DEFAULT_SCALE_FACTOR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SHIFT, + g_param_spec_double ("shift", "Shift", + "Value added to the scaled source array elements", 0.0, G_MAXDOUBLE, + DEFAULT_SHIFT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&src_factory)); @@ -160,6 +172,8 @@ static void gst_cv_laplace_init (GstCvLaplace * filter) { filter->aperture_size = DEFAULT_APERTURE_SIZE; + filter->scale = DEFAULT_SCALE_FACTOR; + filter->shift = DEFAULT_SHIFT; gst_base_transform_set_in_place (GST_BASE_TRANSFORM (filter), FALSE); } @@ -277,6 +291,12 @@ gst_cv_laplace_set_property (GObject * object, guint prop_id, filter->aperture_size = g_value_get_int (value); } break; + case PROP_SCALE: + filter->scale = g_value_get_double (value); + break; + case PROP_SHIFT: + filter->shift = g_value_get_double (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -293,6 +313,12 @@ gst_cv_laplace_get_property (GObject * object, guint prop_id, case PROP_APERTURE_SIZE: g_value_set_int (value, filter->aperture_size); break; + case PROP_SCALE: + g_value_set_double (value, filter->scale); + break; + case PROP_SHIFT: + g_value_set_double (value, filter->shift); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -308,7 +334,8 @@ gst_cv_laplace_transform (GstOpencvVideoFilter * base, GstBuffer * buf, g_assert (filter->intermediary_img); cvLaplace (img, filter->intermediary_img, filter->aperture_size); - cvConvertScale (filter->intermediary_img, outimg, 1, 0); + cvConvertScale (filter->intermediary_img, outimg, filter->scale, + filter->shift); return GST_FLOW_OK; } diff --git a/ext/opencv/gstcvlaplace.h b/ext/opencv/gstcvlaplace.h index 098b347de8..92bf7bba4d 100644 --- a/ext/opencv/gstcvlaplace.h +++ b/ext/opencv/gstcvlaplace.h @@ -70,6 +70,8 @@ struct _GstCvLaplace GstOpencvVideoFilter element; gint aperture_size; + gdouble scale; + gdouble shift; IplImage *intermediary_img; };