public void Close() { if (capture_handle != IntPtr.Zero) { K4A.k4a_capture_release(capture_handle); capture_handle = IntPtr.Zero; } }
void Close() { if (image_handle != IntPtr.Zero) { K4A.k4a_image_release(image_handle); image_handle = IntPtr.Zero; } }
/// <summary> /// Close the Kinect Sensor /// Kinectセンサーを閉じる /// </summary> public void Close() { if (device_handle != IntPtr.Zero) { K4A.k4a_device_close(device_handle); device_handle = IntPtr.Zero; serialNumber = string.Empty; } }
// Start is called before the first frame update void Start() { //Debug.Log("This is C# program"); //Debug.Log(DisplayHelloFromDLL()); //Debug.Log(k4a_device_get_installed_count()); Debug.Log(K4A.k4a_device_get_installed_count() + " cameras"); StartTheCamera(); }
/// <summary> /// カメラを起動する /// </summary> public void StartCamera(DeviceConfiguration config) { var ret = K4A.k4a_device_start_cameras(device_handle, ref config); if (ret != k4a_result_t.K4A_RESULT_SUCCEEDED) { throw new AzureKinectException(ret.ToString()); } }
/// <summary> /// 指定されたインデックスのKinectセンサーを開く /// </summary> /// <param name="index"></param> public void Open(UInt32 index) { Close(); var ret = K4A.k4a_device_open(index, out device_handle); if (ret != k4a_result_t.K4A_RESULT_SUCCEEDED) { throw new AzureKinectException(ret); } }
/// <summary> /// カメラを起動する Start the camera /// </summary> public void StartCamera(DeviceConfiguration config) { Debug.Log("device handle" + device_handle); var ret = K4A.k4a_device_start_cameras(device_handle, ref config); if (ret != k4a_result_t.K4A_RESULT_SUCCEEDED) { Debug.Log("Start camera result:" + ret.ToString()); throw new AzureKinectException(ret); // when start cameras failed, ret.toString printed 'K4A_RESULT_SUCCEEDED' instead of failed // removing the toString prints the correct error 'K4A_RESULT_FAILED' } }
/// <summary> /// Open the Kinect sensor at the specified index /// 指定されたインデックスのKinectセンサーを開く /// </summary> /// <param name="index"></param> public void Open(UInt32 index) { Close(); Debug.Log("device_handle:" + device_handle); var ret = K4A.k4a_device_open(index, out device_handle); Debug.Log("open ret:" + ret.ToString()); if (ret != k4a_result_t.K4A_RESULT_SUCCEEDED) { throw new AzureKinectException(ret); } }
static void Main(string[] args) { try { Console.WriteLine($"Device Count : {K4A.k4a_device_get_installed_count()}"); Console.WriteLine($"Device Count : {KinectSensor.SensorCount}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public bool Open(KinectSensor sensor, Int32 timeout) { var ret = K4A.k4a_device_get_capture(sensor.device_handle, out capture_handle, timeout); if (ret != k4a_wait_result_t.K4A_WAIT_RESULT_FAILED) { throw new AzureKinectException(ret.ToString()); } else if (ret == k4a_wait_result_t.K4A_WAIT_RESULT_TIMEOUT) { return(false); } return(true); }
/// <summary> /// シリアルナンバーを取得する /// </summary> /// <returns></returns> public string GetSerialNumber() { // 取得済みであれば、そのまま返す if (!string.IsNullOrEmpty(serialNumber)) { return(serialNumber); } // If the second argument buffer is NULL (0), the serial number buffer size is returned // 第二引数のバッファをNULL(0)にすると、シリアルナンバーのバッファサイズが返る UInt64 size = 0; var ret = K4A.k4a_device_get_serialnum(device_handle, IntPtr.Zero, ref size); if (ret != k4a_buffer_result_t.K4A_BUFFER_RESULT_TOO_SMALL) { throw new AzureKinectException(ret.ToString()); } // Actually get the serial number // 実際にシリアルナンバーを取得する var buffer = Marshal.AllocHGlobal((int)size); try { ret = K4A.k4a_device_get_serialnum(device_handle, buffer, ref size); if (ret != k4a_buffer_result_t.K4A_BUFFER_RESULT_SUCCEEDED) { throw new AzureKinectException(ret.ToString()); } var serial = new byte[size]; Marshal.Copy(buffer, serial, 0, (int)size); // '\0'は抜く serialNumber = Encoding.ASCII.GetString(serial, 0, (int)size - 1); return(serialNumber); } finally { Marshal.FreeHGlobal(buffer); } }
public bool Open(KinectSensor sensor, Int32 timeout) { var ret = K4A.k4a_device_get_capture(sensor.device_handle, out capture_handle, timeout); Debug.Log("open ret:" + ret.ToString()); Debug.Log( k4a_wait_result_t.K4A_WAIT_RESULT_FAILED.ToString() .Equals(ret.ToString(), StringComparison.Ordinal)); if (ret == k4a_wait_result_t.K4A_WAIT_RESULT_TIMEOUT) { Debug.Log("open w/in open timeout:" + ret.ToString()); return(false); } else if (ret == k4a_wait_result_t.K4A_WAIT_RESULT_FAILED) { Debug.Log("open w/in open failed:" + ret.ToString()); throw new AzureKinectException(ret.ToString()); } Debug.Log("open w/in open good:" + ret.ToString()); return(true); }
public Image GetColorImage() { return(new Image(K4A.k4a_capture_get_color_image(capture_handle))); }
IntPtr getBuffer() { return(K4A.k4a_image_get_buffer(image_handle)); }
UInt64 getSize() { return(K4A.k4a_image_get_size(image_handle)); }
ImageFormat getFormat() { return((ImageFormat)K4A.k4a_image_get_format(image_handle)); }
int getWidth() { return(K4A.k4a_image_get_width_pixels(image_handle)); }
int getHeight() { return(K4A.k4a_image_get_height_pixels(image_handle)); }
/// <summary> /// カメラを停止する Stop the camera /// </summary> public void StopCamera() { K4A.k4a_device_stop_cameras(device_handle); }
int getStride() { return(K4A.k4a_image_get_stride_bytes(image_handle)); }
UInt64 getTimestamp() { return(K4A.k4a_image_get_timestamp_usec(image_handle)); }