diff --git a/configure.ac b/configure.ac index 8ecfbad2bf..bf3178fac9 100644 --- a/configure.ac +++ b/configure.ac @@ -1272,7 +1272,7 @@ AG_GST_CHECK_FEATURE(OPENCV, [opencv plugins], opencv, [ dnl a new version and the no-backward-compatibility define. (There doesn't dnl seem to be a switch to suppress the warnings the cvcompat.h header dnl causes.) - PKG_CHECK_MODULES(OPENCV, opencv >= 2.0.0 opencv <= 2.1.0 , [ + PKG_CHECK_MODULES(OPENCV, opencv >= 2.0.0 opencv <= 2.2.0 , [ AC_PROG_CXX AC_LANG_CPLUSPLUS OLD_CPPFLAGS=$CPPFLAGS diff --git a/ext/opencv/gstfaceblur.c b/ext/opencv/gstfaceblur.c index 3ac2af41b4..640756b4d3 100644 --- a/ext/opencv/gstfaceblur.c +++ b/ext/opencv/gstfaceblur.c @@ -269,7 +269,11 @@ gst_faceblur_chain (GstPad * pad, GstBuffer * buf) if (filter->cvCascade) { faces = cvHaarDetectObjects (filter->cvGray, filter->cvCascade, - filter->cvStorage, 1.1, 2, 0, cvSize (30, 30)); + filter->cvStorage, 1.1, 2, 0, cvSize (30, 30) +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2) + , cvSize (32, 32) +#endif + ); if (faces && faces->total > 0) { buf = gst_buffer_make_writable (buf); diff --git a/ext/opencv/gstfaceblur.h b/ext/opencv/gstfaceblur.h index 34ea09a0a2..9c98ce8e89 100644 --- a/ext/opencv/gstfaceblur.h +++ b/ext/opencv/gstfaceblur.h @@ -49,6 +49,10 @@ #include #include +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2) +#include +#endif + G_BEGIN_DECLS /* #defines don't like whitespacey bits */ #define GST_TYPE_FACEBLUR \ diff --git a/ext/opencv/gstfacedetect.c b/ext/opencv/gstfacedetect.c index 0254b74b65..a3ced6d012 100644 --- a/ext/opencv/gstfacedetect.c +++ b/ext/opencv/gstfacedetect.c @@ -408,8 +408,11 @@ gst_facedetect_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf, faces = cvHaarDetectObjects (filter->cvGray, filter->cvCascade, filter->cvStorage, filter->scale_factor, filter->min_neighbors, - filter->flags, - cvSize (filter->min_size_width, filter->min_size_height)); + filter->flags, cvSize (filter->min_size_width, filter->min_size_height) +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2) + , cvSize (filter->min_size_width + 2, filter->min_size_height + 2) +#endif + ); if (faces && faces->total > 0) { msg = gst_facedetect_message_new (filter, buf); diff --git a/ext/opencv/gstfacedetect.h b/ext/opencv/gstfacedetect.h index fbb8718dc8..a5a0b49f4f 100644 --- a/ext/opencv/gstfacedetect.h +++ b/ext/opencv/gstfacedetect.h @@ -50,6 +50,10 @@ #include #include "gstopencvvideofilter.h" +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2) +#include +#endif + G_BEGIN_DECLS /* #defines don't like whitespacey bits */ #define GST_TYPE_FACEDETECT \ diff --git a/ext/opencv/gsttemplatematch.c b/ext/opencv/gsttemplatematch.c index bc15d815db..2d76aa8d3a 100644 --- a/ext/opencv/gsttemplatematch.c +++ b/ext/opencv/gsttemplatematch.c @@ -162,7 +162,7 @@ gst_templatematch_class_init (GstTemplateMatchClass * klass) /* initialize the new element * instantiate pads and add them to element - * set pad calback functions + * set pad callback functions * initialize instance structure */ static void @@ -315,19 +315,32 @@ gst_templatematch_chain (GstPad * pad, GstBuffer * buf) if ((!filter) || (!buf) || filter->template == NULL) { return GST_FLOW_OK; } + GST_DEBUG_OBJECT (filter, "Buffer size %u ", GST_BUFFER_SIZE (buf)); + filter->cvImage->imageData = (char *) GST_BUFFER_DATA (buf); if (!filter->cvDistImage) { - filter->cvDistImage = - cvCreateImage (cvSize (filter->cvImage->width - - filter->cvTemplateImage->width + 1, - filter->cvImage->height - filter->cvTemplateImage->height + 1), - IPL_DEPTH_32F, 1); - if (!filter->cvDistImage) { - GST_WARNING ("Couldn't create dist image."); + if (filter->cvTemplateImage->width > filter->cvImage->width) { + GST_WARNING ("Template Image is wider than input image"); + } else if (filter->cvTemplateImage->height > filter->cvImage->height) { + GST_WARNING ("Template Image is taller than input image"); + } else { + + GST_DEBUG_OBJECT (filter, "cvCreateImage (Size(%d-%d+1,%d) %d, %d)", + filter->cvImage->width, filter->cvTemplateImage->width, + filter->cvImage->height - filter->cvTemplateImage->height + 1, + IPL_DEPTH_32F, 1); + filter->cvDistImage = + cvCreateImage (cvSize (filter->cvImage->width - + filter->cvTemplateImage->width + 1, + filter->cvImage->height - filter->cvTemplateImage->height + 1), + IPL_DEPTH_32F, 1); + if (!filter->cvDistImage) { + GST_WARNING ("Couldn't create dist image."); + } } } - if (filter->cvTemplateImage) { + if (filter->cvTemplateImage && filter->cvImage && filter->cvDistImage) { GstStructure *s; GstMessage *m; @@ -389,8 +402,10 @@ gst_templatematch_load_template (GstTemplateMatch * filter) if (filter->template) { filter->cvTemplateImage = cvLoadImage (filter->template, CV_LOAD_IMAGE_COLOR); + if (!filter->cvTemplateImage) { - GST_WARNING ("Couldn't load template image: %s.", filter->template); + GST_WARNING ("Couldn't load template image: %s. error: %s", + filter->template, g_strerror (errno)); } } } diff --git a/ext/opencv/gsttextoverlay.h b/ext/opencv/gsttextoverlay.h index e870cf5257..df0206bf5e 100644 --- a/ext/opencv/gsttextoverlay.h +++ b/ext/opencv/gsttextoverlay.h @@ -47,9 +47,6 @@ #define __GST_OPENCV_TEXT_OVERLAY_H__ #include -#include -#include -#include G_BEGIN_DECLS