1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
From: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date: Sun, 9 Dec 2018 18:38:40 +0100
Subject: Remove ConditionalRemoval API and add deprecation notice
---
examples/official/Filtering/remove_outliers.py | 3 ++-
pcl/pcl_filters_180.pxd | 4 ----
pcl/pxi/Filters/ConditionalRemoval_180.pxi | 12 +++++++++++-
pcl/pxi/PointCloud_PointXYZ_180.pxi | 13 +++++++++++++
pcl/pxi/PointCloud_SensorPoint.pxi | 12 ++++++++++++
tests/test_filters.py | 3 ++-
6 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/examples/official/Filtering/remove_outliers.py b/examples/official/Filtering/remove_outliers.py
index b586737..fd1da1a 100644
--- a/examples/official/Filtering/remove_outliers.py
+++ b/examples/official/Filtering/remove_outliers.py
@@ -86,7 +86,8 @@ elif args.Removal == 'Condition':
range_cond.add_Comparison2('z', pcl.CythonCompareOp_Type.LT, 0.8)
# build the filter
- condrem = cloud.make_ConditionalRemoval(range_cond)
+ condrem = cloud.make_ConditionalRemoval()
+ condrem.set_Condition(range_cond)
condrem.set_KeepOrganized(True)
# apply filter
cloud_filtered = condrem.filter ()
diff --git a/pcl/pcl_filters_180.pxd b/pcl/pcl_filters_180.pxd
index c272819..cb6f075 100644
--- a/pcl/pcl_filters_180.pxd
+++ b/pcl/pcl_filters_180.pxd
@@ -616,10 +616,6 @@ cdef extern from "pcl/filters/conditional_removal.h" namespace "pcl":
ConditionalRemoval(int)
# ConditionalRemoval (ConditionBasePtr condition, bool extract_removed_indices = false)
# python invalid default param ?
- ConditionalRemoval (ConditionBasePtr_t condition, bool extract_removed_indices = false)
- ConditionalRemoval (ConditionBase_PointXYZI_Ptr_t condition, bool extract_removed_indices = false)
- ConditionalRemoval (ConditionBase_PointXYZRGB_Ptr_t condition, bool extract_removed_indices = false)
- ConditionalRemoval (ConditionBase_PointXYZRGBA_Ptr_t condition, bool extract_removed_indices = false)
# [with PointT = pcl::PointXYZ, pcl::ConditionalRemoval<PointT>::ConditionBasePtr = boost::shared_ptr<pcl::ConditionBase<pcl::PointXYZ> >]
# is deprecated (declared at /usr/include/pcl-1.7/pcl/filters/conditional_removal.h:632): ConditionalRemoval(ConditionBasePtr condition, bool extract_removed_indices = false) is deprecated,
# please use the setCondition (ConditionBasePtr condition) function instead. [-Wdeprecated-declarations]
diff --git a/pcl/pxi/Filters/ConditionalRemoval_180.pxi b/pcl/pxi/Filters/ConditionalRemoval_180.pxi
index 88a5e6d..5e25b37 100644
--- a/pcl/pxi/Filters/ConditionalRemoval_180.pxi
+++ b/pcl/pxi/Filters/ConditionalRemoval_180.pxi
@@ -19,7 +19,14 @@ cdef class ConditionalRemoval:
def __cinit__(self, ConditionAnd cond):
# self.me = new pclfil.ConditionalRemoval_t(<pclfil.ConditionBase_t*>cond.me)
# direct - NG
- self.me = new pclfil.ConditionalRemoval_t(<pclfil.ConditionBasePtr_t>cond.me)
+ from warnings import warn
+ warn("constructor with condition is deprecated, use setCondition()",
+ DeprecationWarning)
+ self.me = new pclfil.ConditionalRemoval_t()
+ self.me.setCondition(<pclfil.ConditionBasePtr_t>cond.me)
+
+ def __cinit__(self):
+ self.me = new pclfil.ConditionalRemoval_t()
# def __dealloc__(self):
# # MemoryAccessError
@@ -29,6 +36,9 @@ cdef class ConditionalRemoval:
def set_KeepOrganized(self, flag):
self.me.setKeepOrganized(flag)
+ def set_Condition(self, ConditionAnd cond):
+ self.me.setCondition(<pclfil.ConditionBasePtr_t>cond.me)
+
def filter(self):
"""
Apply the filter according to the previously set parameters and return
diff --git a/pcl/pxi/PointCloud_PointXYZ_180.pxi b/pcl/pxi/PointCloud_PointXYZ_180.pxi
index 7956c5c..f386e9c 100644
--- a/pcl/pxi/PointCloud_PointXYZ_180.pxi
+++ b/pcl/pxi/PointCloud_PointXYZ_180.pxi
@@ -468,10 +468,23 @@ cdef class PointCloud:
cdef pclfil.ConditionAnd_t *cCondAnd = <pclfil.ConditionAnd_t *>condAnd.me
return condAnd
+ def make_ConditionalRemoval(self):
+ """
+ Return a pcl.ConditionalRemoval object with this object set as the input-cloud
+ """
+ condRemoval = ConditionalRemoval()
+ cdef pclfil.ConditionalRemoval_t *cCondRemoval = <pclfil.ConditionalRemoval_t *>condRemoval.me
+ cCondRemoval.setInputCloud(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
+ return condRemoval
+
def make_ConditionalRemoval(self, ConditionAnd range_conf):
"""
Return a pcl.ConditionalRemoval object with this object set as the input-cloud
"""
+ from warnings import warn
+ warn("constructor with condition is deprecated, use setCondition()",
+ DeprecationWarning)
+
condRemoval = ConditionalRemoval(range_conf)
cdef pclfil.ConditionalRemoval_t *cCondRemoval = <pclfil.ConditionalRemoval_t *>condRemoval.me
cCondRemoval.setInputCloud(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
diff --git a/pcl/pxi/PointCloud_SensorPoint.pxi b/pcl/pxi/PointCloud_SensorPoint.pxi
index e26fca6..b8a5d79 100644
--- a/pcl/pxi/PointCloud_SensorPoint.pxi
+++ b/pcl/pxi/PointCloud_SensorPoint.pxi
@@ -466,10 +466,22 @@ cdef class PointCloud2:
cdef pclfil.ConditionAnd_t *cCondAnd = <pclfil.ConditionAnd_t *>condAnd.me
return condAnd
+ def make_ConditionalRemoval(self):
+ """
+ Return a pcl.ConditionalRemoval object with this object set as the input-cloud
+ """
+ condRemoval = ConditionalRemoval()
+ cdef pclfil.ConditionalRemoval_t *cCondRemoval = <pclfil.ConditionalRemoval_t *>condRemoval.me
+ cCondRemoval.setInputCloud(<cpp.shared_ptr[cpp.PointCloud2[cpp.PointXYZ]]> self.thisptr_shared)
+ return condRemoval
+
def make_ConditionalRemoval(self, ConditionAnd range_conf):
"""
Return a pcl.ConditionalRemoval object with this object set as the input-cloud
"""
+ warn("constructor with condition is deprecated, use setCondition()",
+ DeprecationWarning)
+
condRemoval = ConditionalRemoval(range_conf)
cdef pclfil.ConditionalRemoval_t *cCondRemoval = <pclfil.ConditionalRemoval_t *>condRemoval.me
cCondRemoval.setInputCloud(<cpp.shared_ptr[cpp.PointCloud2[cpp.PointXYZ]]> self.thisptr_shared)
diff --git a/tests/test_filters.py b/tests/test_filters.py
index 3c0c605..db40671 100644
--- a/tests/test_filters.py
+++ b/tests/test_filters.py
@@ -62,7 +62,8 @@ class TestConditionalRemoval(unittest.TestCase):
# self.p = pcl.load("tests" + os.path.sep + "flydracyl.pcd")
# self.p = pcl.PointCloud(_data)
self.p = pcl.PointCloud(_data2)
- self.fil = self.p.make_ConditionalRemoval(pcl.ConditionAnd())
+ self.fil = self.p.make_ConditionalRemoval()
+ self.fil.set_Condition(pcl.ConditionAnd())
# result
# nan nan nan
|