opencv: switch deprecated cvSmooth for GaussianBlur

The OpenCV cvSmooth function is deprecated [0] and the documentation
recommends to use GaussianBlur (). This makes the spatial property go
unused. Marking it as deprecated, making it non-functional and will remove
in the next cycle.

[0] http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html
This commit is contained in:
Luis de Bethencourt 2015-12-16 18:37:37 +00:00
parent 052f41e5c2
commit ad1b36321a
2 changed files with 19 additions and 30 deletions

View file

@ -60,11 +60,13 @@
#include "gstopencvutils.h"
#include "gstcvsmooth.h"
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/imgproc.hpp>
GST_DEBUG_CATEGORY_STATIC (gst_cv_smooth_debug);
#define GST_CAT_DEFAULT gst_cv_smooth_debug
using namespace cv;
/* Filter signals and args */
enum
{
@ -114,7 +116,7 @@ gst_cv_smooth_type_get_type (void)
#define DEFAULT_CV_SMOOTH_TYPE CV_GAUSSIAN
#define DEFAULT_WIDTH 3
#define DEFAULT_HEIGHT 0
#define DEFAULT_HEIGHT 3
#define DEFAULT_COLORSIGMA 0.0
#define DEFAULT_SPATIALSIGMA 0.0
@ -157,33 +159,24 @@ gst_cv_smooth_class_init (GstCvSmoothClass * klass)
DEFAULT_CV_SMOOTH_TYPE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))
);
g_object_class_install_property (gobject_class, PROP_WIDTH,
g_param_spec_int ("width", "width (aperture width)",
"The aperture width (Must be positive and odd)."
"Check cvSmooth OpenCV docs: http://opencv.willowgarage.com"
"/documentation/image_filtering.html#cvSmooth", 1, G_MAXINT,
DEFAULT_WIDTH, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_param_spec_int ("width", "width (kernel width)",
"The gaussian kernel width (must be positive and odd).",
1, G_MAXINT, DEFAULT_WIDTH,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_HEIGHT,
g_param_spec_int ("height", "height (aperture height)",
"The aperture height, if zero, the width is used."
"(Must be positive and odd or zero, unuset in median and bilateral "
"types). Check cvSmooth OpenCV docs: http://opencv.willowgarage.com"
"/documentation/image_filtering.html#cvSmooth", 0, G_MAXINT,
DEFAULT_HEIGHT, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_param_spec_int ("height", "height (kernel height)",
"The gaussian kernel height (must be positive and odd).",
0, G_MAXINT, DEFAULT_HEIGHT,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_COLORSIGMA,
g_param_spec_double ("color", "color (gaussian standard deviation or "
"color sigma",
"If type is gaussian, this means the standard deviation."
"If type is bilateral, this means the color-sigma. If zero, "
"Default values are used."
"Check cvSmooth OpenCV docs: http://opencv.willowgarage.com"
"/documentation/image_filtering.html#cvSmooth",
"Gaussian kernel standard deviation in X and Y direction",
0, G_MAXDOUBLE, DEFAULT_COLORSIGMA,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_SPATIALSIGMA,
g_param_spec_double ("spatial", "spatial (spatial sigma, bilateral only)",
"Only used in bilateral type, means the spatial-sigma."
"Check cvSmooth OpenCV docs: http://opencv.willowgarage.com"
"/documentation/image_filtering.html#cvSmooth",
"(DEPRECATED: value not used anymore)",
0, G_MAXDOUBLE, DEFAULT_SPATIALSIGMA,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
@ -215,7 +208,6 @@ gst_cv_smooth_init (GstCvSmooth * filter)
filter->width = DEFAULT_WIDTH;
filter->height = DEFAULT_HEIGHT;
filter->colorsigma = DEFAULT_COLORSIGMA;
filter->spatialsigma = DEFAULT_SPATIALSIGMA;
gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
FALSE);
@ -266,7 +258,7 @@ gst_cv_smooth_set_property (GObject * object, guint prop_id,
case PROP_HEIGHT:{
gint prop = g_value_get_int (value);
if (prop % 2 == 1 || prop == 0) {
if (prop % 2 == 1) {
filter->height = prop;
} else {
GST_WARNING_OBJECT (filter, "Ignoring value for height, not odd"
@ -278,7 +270,6 @@ gst_cv_smooth_set_property (GObject * object, guint prop_id,
filter->colorsigma = g_value_get_double (value);
break;
case PROP_SPATIALSIGMA:
filter->spatialsigma = g_value_get_double (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -306,7 +297,6 @@ gst_cv_smooth_get_property (GObject * object, guint prop_id,
g_value_set_double (value, filter->colorsigma);
break;
case PROP_SPATIALSIGMA:
g_value_set_double (value, filter->spatialsigma);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -320,8 +310,8 @@ gst_cv_smooth_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
{
GstCvSmooth *filter = GST_CV_SMOOTH (base);
cvSmooth (img, outimg, filter->type, filter->width, filter->height,
filter->colorsigma, filter->spatialsigma);
GaussianBlur (Mat (img), Mat (outimg), Size (filter->width, filter->height),
filter->colorsigma, filter->colorsigma);
return GST_FLOW_OK;
}
@ -332,8 +322,8 @@ gst_cv_smooth_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
{
GstCvSmooth *filter = GST_CV_SMOOTH (base);
cvSmooth (img, img, filter->type, filter->width, filter->height,
filter->colorsigma, filter->spatialsigma);
GaussianBlur (Mat (img), Mat (img), Size (filter->width, filter->height),
filter->colorsigma, filter->colorsigma);
return GST_FLOW_OK;
}

View file

@ -72,7 +72,6 @@ struct _GstCvSmooth
gint width;
gint height;
gdouble colorsigma;
gdouble spatialsigma;
};
struct _GstCvSmoothClass