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
|
# -*- coding: utf-8 -*-
cimport pcl_defs as cpp
cimport pcl_filters as pclfil
cdef class PassThroughFilter:
"""
Passes points in a cloud based on constraints for one particular field of the point type
"""
cdef pclfil.PassThrough_t *me
def __cinit__(self):
self.me = new pclfil.PassThrough_t()
def __dealloc__(self):
del self.me
def set_filter_field_name(self, field_name):
cdef bytes fname_ascii
if isinstance(field_name, unicode):
fname_ascii = field_name.encode("ascii")
elif not isinstance(field_name, bytes):
raise TypeError("field_name should be a string, got %r"
% field_name)
else:
fname_ascii = field_name
self.me.setFilterFieldName(string(fname_ascii))
def set_filter_limits(self, float filter_min, float filter_max):
self.me.setFilterLimits (filter_min, filter_max)
def filter(self):
"""
Apply the filter according to the previously set parameters and return
a new pointcloud
"""
cdef PointCloud pc = PointCloud()
# cdef cpp.PointCloud_t *cCondAnd = <cpp.PointCloud_t *>pc.thisptr()[0]
# self.me.filter(<cpp.PointCloud_t*> pc.thisptr()[0])
# self.me.filter (<cpp.PointCloud_t*> pc.thisptr())
self.me.c_filter(pc.thisptr()[0])
return pc
cdef class PassThroughFilter_PointXYZI:
"""
Passes points in a cloud based on constraints for one particular field of the point type
"""
cdef pclfil.PassThrough_PointXYZI_t *me
def __cinit__(self):
self.me = new pclfil.PassThrough_PointXYZI_t()
def __dealloc__(self):
del self.me
def set_filter_field_name(self, field_name):
cdef bytes fname_ascii
if isinstance(field_name, unicode):
fname_ascii = field_name.encode("ascii")
elif not isinstance(field_name, bytes):
raise TypeError("field_name should be a string, got %r"
% field_name)
else:
fname_ascii = field_name
self.me.setFilterFieldName(string(fname_ascii))
def set_filter_limits(self, float filter_min, float filter_max):
self.me.setFilterLimits (filter_min, filter_max)
def filter(self):
"""
Apply the filter according to the previously set parameters and return
a new PointCloud_PointXYZI
"""
cdef PointCloud_PointXYZI pc = PointCloud_PointXYZI()
self.me.c_filter(pc.thisptr()[0])
return pc
cdef class PassThroughFilter_PointXYZRGB:
"""
Passes points in a cloud based on constraints for one particular field of the point type
"""
cdef pclfil.PassThrough_PointXYZRGB_t *me
def __cinit__(self):
self.me = new pclfil.PassThrough_PointXYZRGB_t()
def __dealloc__(self):
del self.me
def set_filter_field_name(self, field_name):
cdef bytes fname_ascii
if isinstance(field_name, unicode):
fname_ascii = field_name.encode("ascii")
elif not isinstance(field_name, bytes):
raise TypeError("field_name should be a string, got %r"
% field_name)
else:
fname_ascii = field_name
self.me.setFilterFieldName(string(fname_ascii))
def set_filter_limits(self, float filter_min, float filter_max):
self.me.setFilterLimits (filter_min, filter_max)
def filter(self):
"""
Apply the filter according to the previously set parameters and return
a new PointCloud_PointXYZRGB
"""
cdef PointCloud_PointXYZRGB pc = PointCloud_PointXYZRGB()
self.me.c_filter(pc.thisptr()[0])
return pc
cdef class PassThroughFilter_PointXYZRGBA:
"""
Passes points in a cloud based on constraints for one particular field of the point type
"""
cdef pclfil.PassThrough_PointXYZRGBA_t *me
def __cinit__(self):
self.me = new pclfil.PassThrough_PointXYZRGBA_t()
def __dealloc__(self):
del self.me
def set_filter_field_name(self, field_name):
cdef bytes fname_ascii
if isinstance(field_name, unicode):
fname_ascii = field_name.encode("ascii")
elif not isinstance(field_name, bytes):
raise TypeError("field_name should be a string, got %r"
% field_name)
else:
fname_ascii = field_name
self.me.setFilterFieldName(string(fname_ascii))
def set_filter_limits(self, float filter_min, float filter_max):
self.me.setFilterLimits (filter_min, filter_max)
def filter(self):
"""
Apply the filter according to the previously set parameters and return
a new PointCloud_PointXYZRGBA
"""
cdef PointCloud_PointXYZRGBA pc = PointCloud_PointXYZRGBA()
self.me.c_filter(pc.thisptr()[0])
return pc
|