@@ -517,6 +517,11 @@ k4a_result_t k4a_image_to_numpy(k4a_image_t *img_src, PyArrayObject **img_dst) {
517
517
dims[1 ] = k4a_image_get_width_pixels (*img_src);
518
518
*img_dst = (PyArrayObject *)PyArray_SimpleNewFromData (2 , dims, NPY_UINT16, buffer);
519
519
break ;
520
+ case K4A_IMAGE_FORMAT_CUSTOM8:
521
+ dims[0 ] = k4a_image_get_height_pixels (*img_src);
522
+ dims[1 ] = k4a_image_get_width_pixels (*img_src);
523
+ *img_dst = (PyArrayObject *)PyArray_SimpleNewFromData (2 , dims, NPY_UINT8, buffer);
524
+ break ;
520
525
case K4A_IMAGE_FORMAT_CUSTOM:
521
526
// xyz in uint16 format
522
527
dims[0 ] = k4a_image_get_height_pixels (*img_src);
@@ -544,13 +549,15 @@ k4a_result_t numpy_to_k4a_image(PyArrayObject *img_src, k4a_image_t *img_dst, k4
544
549
545
550
switch (format) {
546
551
case K4A_IMAGE_FORMAT_DEPTH16:
552
+ case K4A_IMAGE_FORMAT_CUSTOM16:
553
+ case K4A_IMAGE_FORMAT_IR16:
547
554
pixel_size = (int )sizeof (uint16_t );
548
555
break ;
549
556
case K4A_IMAGE_FORMAT_COLOR_BGRA32:
550
557
pixel_size = (int )sizeof (uint32_t );
551
558
break ;
552
- case K4A_IMAGE_FORMAT_CUSTOM16 :
553
- pixel_size = (unsigned int )sizeof (int16_t );
559
+ case K4A_IMAGE_FORMAT_CUSTOM8 :
560
+ pixel_size = (int )sizeof (uint8_t );
554
561
break ;
555
562
default :
556
563
// Not supported
@@ -707,8 +714,7 @@ static PyObject *transformation_depth_image_to_color_camera_custom(PyObject *sel
707
714
if (K4A_RESULT_SUCCEEDED == res) {
708
715
res = k4a_image_create (k4a_image_get_format (custom_image), RESOLUTION_TO_DIMS[color_resolution][0 ],
709
716
RESOLUTION_TO_DIMS[color_resolution][1 ],
710
- RESOLUTION_TO_DIMS[color_resolution][0 ] * static_cast <int32_t >(sizeof (int16_t )),
711
- custom_image_transformed);
717
+ RESOLUTION_TO_DIMS[color_resolution][0 ] * (int )sizeof (uint16_t ), custom_image_transformed);
712
718
}
713
719
714
720
if (K4A_RESULT_SUCCEEDED == res) {
@@ -729,7 +735,7 @@ static PyObject *transformation_depth_image_to_color_camera_custom(PyObject *sel
729
735
}
730
736
731
737
if (K4A_RESULT_SUCCEEDED == res) {
732
- return Py_BuildValue (" OO " , np_custom_image, np_depth_image);
738
+ return Py_BuildValue (" NN " , np_custom_image, np_depth_image);
733
739
} else {
734
740
free (depth_image_transformed);
735
741
free (custom_image_transformed);
@@ -838,6 +844,7 @@ static PyObject *capture_get_color_image(PyObject *self, PyObject *args) {
838
844
PyObject *capsule;
839
845
int thread_safe;
840
846
uint64_t device_timestamp_usec = 0 ;
847
+ uint64_t system_timestamp_nsec = 0 ;
841
848
PyThreadState *thread_state;
842
849
k4a_result_t res = K4A_RESULT_FAILED;
843
850
@@ -847,7 +854,7 @@ static PyObject *capture_get_color_image(PyObject *self, PyObject *args) {
847
854
k4a_image_t *image = (k4a_image_t *)malloc (sizeof (k4a_image_t ));
848
855
if (image == NULL ) {
849
856
fprintf (stderr, " Cannot allocate memory" );
850
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
857
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
851
858
}
852
859
853
860
thread_state = _gil_release (thread_safe);
@@ -861,10 +868,11 @@ static PyObject *capture_get_color_image(PyObject *self, PyObject *args) {
861
868
862
869
if (K4A_RESULT_SUCCEEDED == res) {
863
870
device_timestamp_usec = k4a_image_get_device_timestamp_usec (*image);
864
- return Py_BuildValue (" NK" , np_image, device_timestamp_usec);
871
+ system_timestamp_nsec = k4a_image_get_system_timestamp_nsec (*image);
872
+ return Py_BuildValue (" NKK" , np_image, device_timestamp_usec, system_timestamp_nsec);
865
873
} else {
866
874
free (image);
867
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
875
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
868
876
}
869
877
}
870
878
@@ -873,6 +881,7 @@ static PyObject *capture_get_depth_image(PyObject *self, PyObject *args) {
873
881
PyObject *capsule;
874
882
int thread_safe;
875
883
uint64_t device_timestamp_usec = 0 ;
884
+ uint64_t system_timestamp_nsec = 0 ;
876
885
PyThreadState *thread_state;
877
886
k4a_result_t res = K4A_RESULT_FAILED;
878
887
@@ -882,7 +891,7 @@ static PyObject *capture_get_depth_image(PyObject *self, PyObject *args) {
882
891
k4a_image_t *image = (k4a_image_t *)malloc (sizeof (k4a_image_t ));
883
892
if (image == NULL ) {
884
893
fprintf (stderr, " Cannot allocate memory" );
885
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
894
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
886
895
}
887
896
888
897
thread_state = _gil_release (thread_safe);
@@ -896,10 +905,11 @@ static PyObject *capture_get_depth_image(PyObject *self, PyObject *args) {
896
905
897
906
if (K4A_RESULT_SUCCEEDED == res) {
898
907
device_timestamp_usec = k4a_image_get_device_timestamp_usec (*image);
899
- return Py_BuildValue (" NK" , np_image, device_timestamp_usec);
908
+ system_timestamp_nsec = k4a_image_get_system_timestamp_nsec (*image);
909
+ return Py_BuildValue (" NKK" , np_image, device_timestamp_usec, system_timestamp_nsec);
900
910
} else {
901
911
free (image);
902
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
912
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
903
913
}
904
914
}
905
915
@@ -908,6 +918,7 @@ static PyObject *capture_get_ir_image(PyObject *self, PyObject *args) {
908
918
PyObject *capsule;
909
919
int thread_safe;
910
920
uint64_t device_timestamp_usec = 0 ;
921
+ uint64_t system_timestamp_nsec = 0 ;
911
922
PyThreadState *thread_state;
912
923
k4a_result_t res = K4A_RESULT_FAILED;
913
924
@@ -917,7 +928,7 @@ static PyObject *capture_get_ir_image(PyObject *self, PyObject *args) {
917
928
k4a_image_t *image = (k4a_image_t *)malloc (sizeof (k4a_image_t ));
918
929
if (image == NULL ) {
919
930
fprintf (stderr, " Cannot allocate memory" );
920
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
931
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
921
932
}
922
933
923
934
thread_state = _gil_release (thread_safe);
@@ -931,10 +942,11 @@ static PyObject *capture_get_ir_image(PyObject *self, PyObject *args) {
931
942
932
943
if (K4A_RESULT_SUCCEEDED == res) {
933
944
device_timestamp_usec = k4a_image_get_device_timestamp_usec (*image);
934
- return Py_BuildValue (" NK" , np_image, device_timestamp_usec);
945
+ system_timestamp_nsec = k4a_image_get_system_timestamp_nsec (*image);
946
+ return Py_BuildValue (" NKK" , np_image, device_timestamp_usec, system_timestamp_nsec);
935
947
} else {
936
948
free (image);
937
- return Py_BuildValue (" NK " , Py_None, device_timestamp_usec);
949
+ return Py_BuildValue (" NKK " , Py_None, device_timestamp_usec, system_timestamp_nsec );
938
950
}
939
951
}
940
952
0 commit comments