@@ -217,6 +217,10 @@ cdef class Frame:
217
217
frame_type : int, optional
218
218
Underlying frame type. Default is -1. Used by ``asarray`` method.
219
219
220
+ numpy_array : numpy.ndarray, optional
221
+ Numpy array of depth or ir data with ndim=2,
222
+ that will be converted to a frame class.
223
+ Default is None.
220
224
See also
221
225
--------
222
226
@@ -228,7 +232,7 @@ cdef class Frame:
228
232
cdef int frame_type
229
233
230
234
def __cinit__ (self , width = None , height = None , bytes_per_pixel = None ,
231
- int frame_type = - 1 ):
235
+ int frame_type = - 1 , np.ndarray[np. float32_t , ndim = 2 , mode = " c " ] numpy_array = None ):
232
236
w,h,b = width, height, bytes_per_pixel
233
237
all_none = (w is None ) and (h is None ) and (b is None )
234
238
all_not_none = (w is not None ) and (h is not None ) and (b is not None )
@@ -238,11 +242,21 @@ cdef class Frame:
238
242
239
243
if all_not_none:
240
244
self .take_ownership = True
241
- self .ptr = new libfreenect2.Frame(
242
- width, height, bytes_per_pixel, NULL )
245
+ if numpy_array is None :
246
+ self .ptr = new libfreenect2.Frame(
247
+ width, height, bytes_per_pixel, NULL )
248
+ else :
249
+ self .__instantiate_frame_with_bytes(
250
+ width, height, bytes_per_pixel, numpy_array.reshape(- 1 ))
243
251
else :
244
252
self .take_ownership = False
245
253
254
+ cdef __instantiate_frame_with_bytes(self , int width, int height,
255
+ int bytes_per_pixel, np.ndarray[np.float32_t, ndim= 1 , mode= " c" ] numpy_array):
256
+ cdef uint8_t* bytes_ptr = reinterpret_cast[uint8_pt](& numpy_array[0 ])
257
+ self .ptr = new libfreenect2.Frame(
258
+ width, height, bytes_per_pixel, bytes_ptr)
259
+
246
260
def __dealloc__ (self ):
247
261
if self .take_ownership and self .ptr is not NULL :
248
262
del self .ptr
@@ -632,21 +646,40 @@ cdef class ColorCameraParams:
632
646
""" Same as ``libfreenect2::Freenect2Device::ColorCameraParams::fx``"""
633
647
return self .params.fx
634
648
649
+ @fx.setter
650
+ def fx (self , value ):
651
+ """ Sets fx parameter"""
652
+ self .params.fx = value
653
+
635
654
@property
636
655
def fy (self ):
637
656
""" Same as ``libfreenect2::Freenect2Device::ColorCameraParams::fy``"""
638
657
return self .params.fy
639
658
659
+ @fy.setter
660
+ def fy (self , value ):
661
+ """ Sets fy parameter"""
662
+ self .params.fy = value
663
+
640
664
@property
641
665
def cx (self ):
642
666
""" Same as ``libfreenect2::Freenect2Device::ColorCameraParams::cx``"""
643
667
return self .params.cx
644
668
669
+ @cx.setter
670
+ def cx (self , value ):
671
+ """ Sets cx parameter"""
672
+ self .params.cx = value
673
+
645
674
@property
646
675
def cy (self ):
647
676
""" Same as ``libfreenect2::Freenect2Device::ColorCameraParams::cy``"""
648
677
return self .params.cy
649
678
679
+ @cy.setter
680
+ def cy (self , value ):
681
+ """ Sets cx parameter"""
682
+ self .params.cy = value
650
683
651
684
cdef class IrCameraParams:
652
685
""" Python interface for ``libfreenect2::IrCameraParams``.
@@ -666,21 +699,91 @@ cdef class IrCameraParams:
666
699
""" Same as ``libfreenect2::Freenect2Device::IrCameraParams::fx``"""
667
700
return self .params.fx
668
701
702
+ @fx.setter
703
+ def fx (self , value ):
704
+ """ Sets fx parameter"""
705
+ self .params.fx = value
706
+
669
707
@property
670
708
def fy (self ):
671
709
""" Same as ``libfreenect2::Freenect2Device::IrCameraParams::fy``"""
672
710
return self .params.fy
673
711
712
+ @fy.setter
713
+ def fy (self , value ):
714
+ """ Sets fy parameter"""
715
+ self .params.fy = value
716
+
674
717
@property
675
718
def cx (self ):
676
719
""" Same as ``libfreenect2::Freenect2Device::IrCameraParams::cx``"""
677
720
return self .params.cx
678
721
722
+ @cx.setter
723
+ def cx (self , value ):
724
+ """ Sets cx parameter"""
725
+ self .params.cx = value
726
+
679
727
@property
680
728
def cy (self ):
681
729
""" Same as ``libfreenect2::Freenect2Device::IrCameraParams::cy``"""
682
730
return self .params.cy
683
731
732
+ @cy.setter
733
+ def cy (self , value ):
734
+ """ Sets cx parameter"""
735
+ self .params.cy = value
736
+
737
+ @property
738
+ def k1 (self ):
739
+ """ Same as ``libfreenect2::Freenect2Device::IrCameraParams::k1``"""
740
+ return self .params.k1
741
+
742
+ @k1.setter
743
+ def k1 (self , value ):
744
+ """ Sets k1 parameter"""
745
+ self .params.k1 = value
746
+
747
+ @property
748
+ def k2 (self ):
749
+ """ Same as ``libfreenect2::Freenect2Device::IrCameraParams::k2``"""
750
+ return self .params.k2
751
+
752
+ @k2.setter
753
+ def k2 (self , value ):
754
+ """ Sets k2 parameter"""
755
+ self .params.k2 = value
756
+
757
+ @property
758
+ def k3 (self ):
759
+ """ Same as ``libfreenect2::Freenect2Device::IrCameraParams::k3``"""
760
+ return self .params.k3
761
+
762
+ @k3.setter
763
+ def k3 (self , value ):
764
+ """ Sets k3 parameter"""
765
+ self .params.k3 = value
766
+
767
+ @property
768
+ def p1 (self ):
769
+ """ Same as ``libfreenect2::Freenect2Device::IrCameraParams::p1``"""
770
+ return self .params.p1
771
+
772
+ @p1.setter
773
+ def p1 (self , value ):
774
+ """ Sets p1 parameter"""
775
+ self .params.p1 = value
776
+
777
+ @property
778
+ def p2 (self ):
779
+ """ Same as ``libfreenect2::Freenect2Device::IrCameraParams::p2``"""
780
+ return self .params.p2
781
+
782
+ @p2.setter
783
+ def p2 (self , value ):
784
+ """ Sets p2 parameter"""
785
+ self .params.p2 = value
786
+
684
787
cdef class Registration:
685
788
""" Python interface for ``libfreenect2::Registration``.
686
789
0 commit comments