diff --git a/README.md b/README.md index 825a753..b2f7c65 100644 --- a/README.md +++ b/README.md @@ -49,3 +49,7 @@ easy_install -a c:\projects\downloads\PyKinect2 After installation is complete, you can launch the interactive python shell and `import pykinect2` to ensure everything has been installed properly. Core helper classes for working with the Kinect sensor are located in PyKinectRuntime.py. For usage examples, please see /examples/PyKinectBodyGame.py. + +This is basically a fork of the original PyKinect project on CodePlex. The original project was written by [Chris Lovett](http://www.chrislovett.co.uk/) and [David Gouveia](http://www.davidgouveia.net/). The original project is no longer maintained and is not compatible with Python 3. This project is a fork of the original project with the following changes: + +* Updated to work with Python 3.10.8 diff --git a/pykinect2/PyKinectRuntime.py b/pykinect2/PyKinectRuntime.py index 0454875..183420e 100644 --- a/pykinect2/PyKinectRuntime.py +++ b/pykinect2/PyKinectRuntime.py @@ -2,14 +2,10 @@ from pykinect2.PyKinectV2 import * import ctypes -import _ctypes -from _ctypes import COMError -import comtypes import sys import numpy import time -import importlib if sys.hexversion >= 0x03000000: import _thread as thread @@ -163,7 +159,7 @@ def __init__(self, frame_source_types): self._last_long_exposure_infrared_frame = None self._last_audio_frame = None - start_clock = time.clock() + start_clock = time.perf_counter() self._last_color_frame_access = self._last_color_frame_time = start_clock self._last_body_frame_access = self._last_body_frame_time = start_clock self._last_body_index_frame_access = self._last_body_index_frame_time = start_clock @@ -243,7 +239,7 @@ def get_last_color_frame(self): with self._color_frame_lock: if self._color_frame_data is not None: data = numpy.copy(numpy.ctypeslib.as_array(self._color_frame_data, shape=(self._color_frame_data_capacity.value,))) - self._last_color_frame_access = time.clock() + self._last_color_frame_access = time.perf_counter() return data else: return None @@ -252,7 +248,7 @@ def get_last_infrared_frame(self): with self._infrared_frame_lock: if self._infrared_frame_data is not None: data = numpy.copy(numpy.ctypeslib.as_array(self._infrared_frame_data, shape=(self._infrared_frame_data_capacity.value,))) - self._last_infrared_frame_access = time.clock() + self._last_infrared_frame_access = time.perf_counter() return data else: return None @@ -261,7 +257,7 @@ def get_last_depth_frame(self): with self._depth_frame_lock: if self._depth_frame_data is not None: data = numpy.copy(numpy.ctypeslib.as_array(self._depth_frame_data, shape=(self._depth_frame_data_capacity.value,))) - self._last_depth_frame_access = time.clock() + self._last_depth_frame_access = time.perf_counter() return data else: return None @@ -270,7 +266,7 @@ def get_last_body_index_frame(self): with self._body_index_frame_lock: if self._body_index_frame_data is not None: data = numpy.copy(numpy.ctypeslib.as_array(self._body_index_frame_data, shape=(self._body_index_frame_data_capacity.value,))) - self._last_body_index_frame_access = time.clock() + self._last_body_index_frame_access = time.perf_counter() return data else: return None @@ -278,7 +274,7 @@ def get_last_body_index_frame(self): def get_last_body_frame(self): with self._body_frame_lock: if self._body_frame_bodies is not None: - self._last_body_frame_access = time.clock() + self._last_body_frame_access = time.perf_counter() return self._body_frame_bodies.copy() else: return None @@ -340,7 +336,7 @@ def handle_color_arrived(self, handle_index): try: with self._color_frame_lock: colorFrame.CopyConvertedFrameDataToArray(self._color_frame_data_capacity, self._color_frame_data, PyKinectV2.ColorImageFormat_Bgra) - self._last_color_frame_time = time.clock() + self._last_color_frame_time = time.perf_counter() except: pass colorFrame = None @@ -358,7 +354,7 @@ def handle_depth_arrived(self, handle_index): try: with self._depth_frame_lock: depthFrame.CopyFrameDataToArray(self._depth_frame_data_capacity, self._depth_frame_data) - self._last_depth_frame_time = time.clock() + self._last_depth_frame_time = time.perf_counter() except: pass depthFrame = None @@ -378,7 +374,7 @@ def handle_body_arrived(self, handle_index): with self._body_frame_lock: bodyFrame.GetAndRefreshBodyData(self._body_frame_data_capacity, self._body_frame_data) self._body_frame_bodies = KinectBodyFrameData(bodyFrame, self._body_frame_data, self.max_body_count) - self._last_body_frame_time = time.clock() + self._last_body_frame_time = time.perf_counter() # need these 2 lines as a workaround for handling IBody referencing exception self._body_frame_data = None @@ -402,7 +398,7 @@ def handle_body_index_arrived(self, handle_index): try: with self._body_index_frame_lock: bodyIndexFrame.CopyFrameDataToArray(self._body_index_frame_data_capacity, self._body_index_frame_data) - self._last_body_index_frame_time = time.clock() + self._last_body_index_frame_time = time.perf_counter() except: pass bodyIndexFrame = None @@ -419,7 +415,7 @@ def handle_infrared_arrived(self, handle_index): try: with self._infrared_frame_lock: infraredFrame.CopyFrameDataToArray(self._infrared_frame_data_capacity, self._infrared_frame_data) - self._last_infrared_frame_time = time.clock() + self._last_infrared_frame_time = time.perf_counter() except: pass infraredFrame = None diff --git a/pykinect2/PyKinectV2.py b/pykinect2/PyKinectV2.py index 6fdb0ca..2dd06e4 100644 --- a/pykinect2/PyKinectV2.py +++ b/pykinect2/PyKinectV2.py @@ -7,9 +7,7 @@ from comtypes import * from comtypes import GUID from ctypes import HRESULT -from comtypes import helpstring from comtypes import COMMETHOD -from comtypes import dispid STRING = c_char_p INT_PTR = c_int from ctypes.wintypes import _LARGE_INTEGER @@ -18,7 +16,6 @@ from ctypes.wintypes import _FILETIME WSTRING = c_wchar_p -from _ctypes import COMError comtypes.hresult.E_PENDING = 0x8000000A import numpy.distutils.system_info as sysinfo @@ -2865,7 +2862,8 @@ class IMultiSourceFrameReader(comtypes.IUnknown): 'JointType_HipLeft', 'ColorImageFormat_Rgba', 'IColorCameraSettings', '_DetectionResult', 'IColorFrameReader', 'ColorImageFormat_Yuy2', '_Activity'] -from comtypes import _check_version; _check_version('') + +# from comtypes import _check_version; _check_version('') KINECT_SKELETON_COUNT = 6 diff --git a/test.py b/test.py new file mode 100644 index 0000000..dd82321 --- /dev/null +++ b/test.py @@ -0,0 +1,2 @@ +from pykinect2 import PyKinectRuntime +from pykinect2 import PyKinectV2