Skip to content

Commit 9022715

Browse files
authored
Merge pull request #28 from stereolabs/devel
SDK v3.5
2 parents 2db0aea + fa507d1 commit 9022715

File tree

6 files changed

+136
-17
lines changed

6 files changed

+136
-17
lines changed

CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
cmake_minimum_required(VERSION "3.6")
22

3-
set(proj_name gst-plugins-zed)
4-
project(${proj_name})
3+
project(gst-plugins-zed)
54

65
set(CMAKE_SHARED_MODULE_PREFIX "lib")
76
set(CMAKE_SHARED_LIBRARY_PREFIX "lib")
@@ -46,7 +45,7 @@ include_directories(
4645
)
4746

4847
# values used when registering plugins
49-
add_definitions(-DGST_PACKAGE_VERSION="0.1")
48+
add_definitions(-DGST_PACKAGE_VERSION="3.5")
5049
add_definitions(-DGST_PACKAGE_LICENSE="LGPL")
5150
add_definitions(-DGST_PACKAGE_ORIGIN="https://github.com/stereolabs/zed-gstreamer")
5251
add_definitions(-DGST_PACKAGE_NAME="${CMAKE_PROJECT_NAME}")

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ GStreamer plugin package for ZED Cameras. The package is composed of several plu
3232

3333
### Prerequisites
3434

35-
* Stereo camera: [ZED 2](https://www.stereolabs.com/zed-2/), [ZED](https://www.stereolabs.com/zed/), [ZED Mini](https://www.stereolabs.com/zed-mini/)
36-
* CMake (v3.1+)
35+
* Stereo camera: [ZED 2i](https://www.stereolabs.com/zed-2i/),[ZED 2](https://www.stereolabs.com/zed-2/), [ZED](https://www.stereolabs.com/zed/), [ZED Mini](https://www.stereolabs.com/zed-mini/)
36+
* CMake (v3.6+)
3737
* GStreamer 1.0
3838

3939
### Windows installation
4040

41-
* Install the latest ZED SDK v3.4.x from the [official download page](https://www.stereolabs.com/developers/release/) [Optional to compile the `zedsrc` plugin to acquire data from a ZED camera device]
41+
* Install the latest ZED SDK v3.5.x from the [official download page](https://www.stereolabs.com/developers/release/) [Optional to compile the `zedsrc` plugin to acquire data from a ZED camera device]
4242
* Install [Git](https://git-scm.com/) or download a ZIP archive
4343
* Install [CMake](https://cmake.org/)
4444
* Install a [GStreamer distribution (**both `runtime` and `development` installers**)](https://gstreamer.freedesktop.org/download/).
@@ -157,7 +157,7 @@ Most of the parameters follow the same name as the C++ API. Except that `_` is r
157157
* `od-enabled`: Enable Object Detection - {TRUE, FALSE}
158158
* `od-image-sync`: Set to TRUE to enable Object Detection frame synchronization - {TRUE, FALSE}
159159
* `od-enable-tracking`: Set to TRUE to enable tracking for the detected objects - {TRUE, FALSE}
160-
* `od-detection-model`: Object Detection Model - {Multi class (0), Human Body Tracking FAST (1), Human Body Tracking ACCURATE (2)}
160+
* `od-detection-model`: Object Detection Model - {(0): Object Detection Multi class, (1): Object Detection Multi class ACCURATE, (2): Skeleton tracking FAST, (3): Skeleton tracking ACCURATE, (4): Object Detection Multi class MEDIUM, (5): Skeleton tracking MEDIUM}
161161
* `od-confidence`: Minimum Detection Confidence - {0,100}
162162
* `od-max-range`: Maximum Detection Range - [-1,20000]
163163
* `od-body-fitting`: Set to TRUE to enable body fitting for skeleton tracking - {TRUE, FALSE}

gst-zed-meta/gstzedmeta.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,32 @@ enum class OBJECT_CLASS {
9393
LAST
9494
};
9595

96+
enum class OBJECT_SUBCLASS {
97+
PERSON = 0, /**< PERSON */
98+
BICYCLE = 1, /**< VEHICLE */
99+
CAR = 2, /**< VEHICLE */
100+
MOTORBIKE = 3, /**< VEHICLE */
101+
BUS = 4, /**< VEHICLE */
102+
TRUCK = 5, /**< VEHICLE */
103+
BOAT = 6, /**< VEHICLE */
104+
BACKPACK = 7, /**< BAG */
105+
HANDBAG = 8, /**< BAG */
106+
SUITCASE = 9, /**< BAG */
107+
BIRD = 10, /**< ANIMAL */
108+
CAT = 11, /**< ANIMAL */
109+
DOG = 12, /**< ANIMAL */
110+
HORSE = 13, /**< ANIMAL */
111+
SHEEP = 14, /**< ANIMAL */
112+
COW = 15, /**< ANIMAL */
113+
CELLPHONE = 16, /**< ELECTRONIC */
114+
LAPTOP = 17, /**< ELECTRONIC */
115+
BANANA = 18, /**< FRUIT/VEGETABLE */
116+
APPLE = 19, /**< FRUIT/VEGETABLE */
117+
ORANGE = 20, /**< FRUIT/VEGETABLE */
118+
CARROT = 21, /**< FRUIT/VEGETABLE */
119+
LAST = 22
120+
};
121+
96122
enum class OBJECT_TRACKING_STATE {
97123
OFF, /**< The tracking is not yet initialized, the object ID is not usable */
98124
OK, /**< The object is tracked */
@@ -111,6 +137,7 @@ struct _ZedObjectData {
111137
gint id;
112138

113139
OBJECT_CLASS label;
140+
OBJECT_SUBCLASS sublabel;
114141
OBJECT_TRACKING_STATE tracking_state;
115142
OBJECT_ACTION_STATE action_state;
116143

gst-zed-od-overlay/gstzedodoverlay.cpp

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ static void draw_objects( cv::Mat& image, guint8 obj_count, ZedObjectData* objs,
374374
cv::Rect roi_render(0, 0, image.size().width, image.size().height);
375375

376376
GST_TRACE( "Object: %d", i );
377-
GST_TRACE( " * Id: %d", (int)objs[i].label );
377+
GST_TRACE( " * Id: %d [%d]", (int)objs[i].label, (int)objs[i].sublabel );
378378
GST_TRACE( " * Pos: %g,%g,%g", objs[i].position[0],objs[i].position[1],objs[i].position[2] );
379379

380380
if(objs[i].skeletons_avail==FALSE)
@@ -426,6 +426,81 @@ static void draw_objects( cv::Mat& image, guint8 obj_count, ZedObjectData* objs,
426426
break;
427427
}
428428

429+
if(!objs[i].skeletons_avail)
430+
{
431+
switch (objs[i].sublabel) {
432+
case OBJECT_SUBCLASS::PERSON:
433+
//txt_info << " [Person]";
434+
break;
435+
case OBJECT_SUBCLASS::BICYCLE:
436+
txt_info << " [Bicycle]";
437+
break;
438+
case OBJECT_SUBCLASS::CAR:
439+
txt_info << " [Car]";
440+
break;
441+
case OBJECT_SUBCLASS::MOTORBIKE:
442+
txt_info << " [Motorbike]";
443+
break;
444+
case OBJECT_SUBCLASS::BUS:
445+
txt_info << " [Bus]";
446+
break;
447+
case OBJECT_SUBCLASS::TRUCK:
448+
txt_info << " [Truck]";
449+
break;
450+
case OBJECT_SUBCLASS::BOAT:
451+
txt_info << " [Boat]";
452+
break;
453+
case OBJECT_SUBCLASS::BACKPACK:
454+
txt_info << " [Backpack]";
455+
break;
456+
case OBJECT_SUBCLASS::HANDBAG:
457+
txt_info << " [Handbag]";
458+
break;
459+
case OBJECT_SUBCLASS::SUITCASE:
460+
txt_info << " [Suitcase]";
461+
break;
462+
case OBJECT_SUBCLASS::BIRD:
463+
txt_info << " [Bird]";
464+
break;
465+
case OBJECT_SUBCLASS::CAT:
466+
txt_info << " [Cat]";
467+
break;
468+
case OBJECT_SUBCLASS::DOG:
469+
txt_info << " [Dog]";
470+
break;
471+
case OBJECT_SUBCLASS::HORSE:
472+
txt_info << " [Horse]";
473+
break;
474+
case OBJECT_SUBCLASS::SHEEP:
475+
txt_info << " [Sheep]";
476+
break;
477+
case OBJECT_SUBCLASS::COW:
478+
txt_info << " [Cow]";
479+
break;
480+
case OBJECT_SUBCLASS::CELLPHONE:
481+
txt_info << " [CellPhone]";
482+
break;
483+
case OBJECT_SUBCLASS::LAPTOP:
484+
txt_info << " [Laptop]";
485+
break;
486+
case OBJECT_SUBCLASS::BANANA:
487+
txt_info << " [Banana]";
488+
break;
489+
case OBJECT_SUBCLASS::APPLE:
490+
txt_info << " [Apple]";
491+
break;
492+
case OBJECT_SUBCLASS::ORANGE:
493+
txt_info << " [Orange]";
494+
break;
495+
case OBJECT_SUBCLASS::CARROT:
496+
txt_info << " [Carrot]";
497+
break;
498+
default:
499+
txt_info << " [-]";
500+
break;
501+
}
502+
}
503+
429504
cv::Size txt_size = cv::getTextSize( txt_info.str(), font_face, font_scale, 1, &baseline );
430505

431506
int offset = 5;

gst-zed-src/gstzedsrc.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ typedef enum {
145145
GST_ZEDSRC_OD_MULTI_CLASS_BOX = 0,
146146
GST_ZEDSRC_OD_MULTI_CLASS_BOX_ACCURATE = 1,
147147
GST_ZEDSRC_OD_HUMAN_BODY_FAST = 2,
148-
GST_ZEDSRC_OD_HUMAN_BODY_ACCURATE = 3
148+
GST_ZEDSRC_OD_HUMAN_BODY_ACCURATE = 3,
149+
GST_ZEDSRC_OD_MULTI_CLASS_BOX_MEDIUM = 4,
150+
GST_ZEDSRC_OD_HUMAN_BODY_MEDIUM = 5
149151
} GstZedSrcOdModel;
150152

151153
typedef enum {
@@ -324,7 +326,7 @@ static GType gst_zedsrc_flip_get_type (void)
324326
"Force flip",
325327
"Flip" },
326328
{ GST_ZEDSRC_AUTO,
327-
"Auto mode (ZED2/ZED-M only)",
329+
"Auto mode (ZED2/ZED2i/ZED-M only)",
328330
"Auto" },
329331
{ 0, NULL, NULL },
330332
};
@@ -422,6 +424,12 @@ static GType gst_zedsrc_od_model_get_type (void)
422424
{ GST_ZEDSRC_OD_HUMAN_BODY_ACCURATE,
423425
"Keypoints based, specific to human skeleton, state of the art accuracy, requires powerful GPU",
424426
"Skeleton tracking ACCURATE" },
427+
{ GST_ZEDSRC_OD_MULTI_CLASS_BOX_MEDIUM,
428+
"Any objects, bounding box based, compromise between accuracy and speed",
429+
"Object Detection Multi class MEDIUM" },
430+
{ GST_ZEDSRC_OD_HUMAN_BODY_MEDIUM,
431+
"Keypoints based, specific to human skeleton, compromise between accuracy and speed",
432+
"Skeleton tracking MEDIUM" },
425433
{ 0, NULL, NULL },
426434
};
427435

@@ -1552,9 +1560,9 @@ static gboolean gst_zedsrc_calculate_caps(GstZedSrc* src)
15521560

15531561
static gboolean gst_zedsrc_start( GstBaseSrc * bsrc )
15541562
{
1555-
#if ZED_SDK_MAJOR_VERSION!=3 && ZED_SDK_MINOR_VERSION!=3
1563+
#if(ZED_SDK_MAJOR_VERSION==3 && ZED_SDK_MINOR_VERSION<5)
15561564
GST_ELEMENT_ERROR (src, LIBRARY, FAILED,
1557-
("Wrong ZED SDK version. SDK v3.3.x required "), (NULL));
1565+
("Wrong ZED SDK version. SDK v3.5.x required "), (NULL));
15581566
#endif
15591567

15601568
GstZedSrc *src = GST_ZED_SRC (bsrc);
@@ -2168,6 +2176,9 @@ static GstFlowReturn gst_zedsrc_fill( GstPushSrc * psrc, GstBuffer * buf )
21682176
obj_data[idx].label = static_cast<OBJECT_CLASS>(obj.label);
21692177
GST_TRACE_OBJECT( src, " * [%d] Label: %s", idx, sl::toString(obj.label).c_str() );
21702178

2179+
obj_data[idx].sublabel = static_cast<OBJECT_SUBCLASS>(obj.sublabel);
2180+
GST_TRACE_OBJECT( src, " * [%d] Sublabel: %s", idx, sl::toString(obj.sublabel).c_str() );
2181+
21712182
obj_data[idx].tracking_state = static_cast<OBJECT_TRACKING_STATE>(obj.tracking_state);
21722183
GST_TRACE_OBJECT( src, " * [%d] Tracking state: %s", idx, sl::toString(obj.tracking_state).c_str() );
21732184

@@ -2214,6 +2225,7 @@ static GstFlowReturn gst_zedsrc_fill( GstPushSrc * psrc, GstBuffer * buf )
22142225
GST_TRACE_OBJECT( src, " * [%d] Copied dimensions", idx );
22152226

22162227
if( src->od_detection_model==GST_ZEDSRC_OD_HUMAN_BODY_FAST ||
2228+
src->od_detection_model==GST_ZEDSRC_OD_HUMAN_BODY_MEDIUM ||
22172229
src->od_detection_model==GST_ZEDSRC_OD_HUMAN_BODY_ACCURATE )
22182230
{
22192231
obj_data[idx].skeletons_avail = TRUE;

latest_changes.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
LATEST CHANGES
22
==============
3-
Improved Depth Handling and new `zedsrc` parameters(2021-01-29)
4-
---------------------------------------------------------------
3+
4+
ZED SDK v3.5
5+
-------------
6+
- Add compatibility fix for ZED SDK v3.5
7+
- Add support for new camera model "ZED 2i"
8+
- Improve Depth Handling and new `zedsrc` parameters
59
- Depth mode has now a default value of NONE.
610
To disable the depth elaboration it is also necessary to disable the positional tracking and the object detection,
711
so the values of the relative activation options have been set to false as default.
812
The zedsrc element now starts without performing any depth elaboration with the default settings.
13+
- Add new object detection models:
14+
* GST_ZEDSRC_OD_MULTI_CLASS_BOX_MEDIUM
15+
* GST_ZEDSRC_OD_HUMAN_BODY_MEDIUM
16+
- Add support for object subclasses
917
- New Positional Tracking parameters
1018
* area-file-path
1119
* enable-area-memory
@@ -26,9 +34,6 @@ Improved Depth Handling and new `zedsrc` parameters(2021-01-29)
2634
- New Object Detection parameters
2735
* od-max-range
2836
* od-body-fitting
29-
30-
Name fixes (2021-01-18)
31-
-----------------------
3237
- Change parameters names in `zedsrc` to match the names in the ZED SDK:
3338
* resolution -> camera-resolution
3439
* framerate -> camera-fps
@@ -37,6 +42,7 @@ Name fixes (2021-01-18)
3742
* object-detection-tracking -> od-enable-tracking
3843
* object-detection-confidence -> od-confidence
3944

45+
4046
ZED SDK v3.4
4147
-------------
4248
- Add compatibility fix for ZED SDK v3.4

0 commit comments

Comments
 (0)