[opencv] 07/19: added some property setting and getting
Mattia Rizzolo
mattia at debian.org
Tue Oct 4 17:51:09 UTC 2016
This is an automated email from the git hooks/post-receive script.
mattia pushed a commit to annotated tag 2.4.12.3
in repository opencv.
commit 56654ae360b7ecdb658398fd5efd5a0c76ada71d
Author: Ilya Lavrenov <ilya.lavrenov at itseez.com>
Date: Sun Aug 16 21:25:36 2015 +0300
added some property setting and getting
(cherry picked from commit 75fcedf0edbc83a900918de1a25195eaefc214f5)
---
modules/highgui/src/cap_gstreamer.cpp | 50 ++++++++++++++++++++++++++++++-----
1 file changed, 43 insertions(+), 7 deletions(-)
diff --git a/modules/highgui/src/cap_gstreamer.cpp b/modules/highgui/src/cap_gstreamer.cpp
index 957587c..cab652d 100644
--- a/modules/highgui/src/cap_gstreamer.cpp
+++ b/modules/highgui/src/cap_gstreamer.cpp
@@ -145,6 +145,7 @@ protected:
gpointer data);
GstElement* pipeline;
GstElement* uridecodebin;
+ GstElement* v4l2src;
GstElement* color;
GstElement* sink;
#if GST_VERSION_MAJOR > 0
@@ -168,6 +169,7 @@ void CvCapture_GStreamer::init()
{
pipeline = NULL;
uridecodebin = NULL;
+ v4l2src = NULL;
color = NULL;
sink = NULL;
#if GST_VERSION_MAJOR > 0
@@ -707,14 +709,18 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
if (strstr(name, "opencvsink") != NULL || strstr(name, "appsink") != NULL)
{
sink = GST_ELEMENT ( gst_object_ref (element) );
- done = sink && color;
}
else if (strstr(name, COLOR_ELEM_NAME) != NULL)
{
color = GST_ELEMENT ( gst_object_ref (element) );
- done = sink && color;
+ }
+ else if (strstr(name, "v4l") != NULL)
+ {
+ v4l2src = GST_ELEMENT ( gst_object_ref (element) );
}
g_free(name);
+
+ done = sink && color && v4l2src;
}
#if GST_VERSION_MAJOR > 0
g_value_unset (&value);
@@ -884,7 +890,7 @@ double CvCapture_GStreamer::getProperty( int propId )
if(!pipeline) {
CV_WARN("GStreamer: no pipeline");
- return false;
+ return 0;
}
switch(propId) {
@@ -893,7 +899,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value);
if(!status) {
CV_WARN("GStreamer: unable to query position of stream");
- return false;
+ return 0;
}
return value * 1e-6; // nano seconds to milli seconds
case CV_CAP_PROP_POS_FRAMES:
@@ -901,7 +907,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value);
if(!status) {
CV_WARN("GStreamer: unable to query position of stream");
- return false;
+ return 0;
}
return value;
case CV_CAP_PROP_POS_AVI_RATIO:
@@ -909,7 +915,7 @@ double CvCapture_GStreamer::getProperty( int propId )
status = gst_element_query_position(sink, FORMAT, &value);
if(!status) {
CV_WARN("GStreamer: unable to query position of stream");
- return false;
+ return 0;
}
return ((double) value) / GST_FORMAT_PERCENT_MAX;
case CV_CAP_PROP_FRAME_WIDTH:
@@ -928,6 +934,21 @@ double CvCapture_GStreamer::getProperty( int propId )
case CV_CAP_PROP_CONTRAST:
case CV_CAP_PROP_SATURATION:
case CV_CAP_PROP_HUE:
+ if (v4l2src)
+ {
+ const gchar * propName =
+ propId == CV_CAP_PROP_BRIGHTNESS ? "brightness" :
+ propId == CV_CAP_PROP_CONTRAST ? "contrast" :
+ propId == CV_CAP_PROP_SATURATION ? "saturation" :
+ propId == CV_CAP_PROP_HUE ? "hue" : NULL;
+
+ if (propName)
+ {
+ gint32 value32 = 0;
+ g_object_get(G_OBJECT(v4l2src), propName, &value32, NULL);
+ return value32;
+ }
+ }
case CV_CAP_PROP_GAIN:
case CV_CAP_PROP_CONVERT_RGB:
break;
@@ -944,7 +965,7 @@ double CvCapture_GStreamer::getProperty( int propId )
#undef FORMAT
- return false;
+ return 0;
}
/*!
@@ -1023,6 +1044,21 @@ bool CvCapture_GStreamer::setProperty( int propId, double value )
case CV_CAP_PROP_CONTRAST:
case CV_CAP_PROP_SATURATION:
case CV_CAP_PROP_HUE:
+ if (v4l2src)
+ {
+ const gchar * propName =
+ propId == CV_CAP_PROP_BRIGHTNESS ? "brightness" :
+ propId == CV_CAP_PROP_CONTRAST ? "contrast" :
+ propId == CV_CAP_PROP_SATURATION ? "saturation" :
+ propId == CV_CAP_PROP_HUE ? "hue" : NULL;
+
+ if (propName)
+ {
+ gint32 value32 = cv::saturate_cast<gint32>(value);
+ g_object_set(G_OBJECT(v4l2src), propName, &value32, NULL);
+ return true;
+ }
+ }
case CV_CAP_PROP_GAIN:
case CV_CAP_PROP_CONVERT_RGB:
break;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/opencv.git
More information about the debian-science-commits
mailing list