コード例 #1
0
ファイル: Capture.cs プロジェクト: stahlechris/BodyTracking
 public void Close()
 {
     if (capture_handle != IntPtr.Zero)
     {
         K4A.k4a_capture_release(capture_handle);
         capture_handle = IntPtr.Zero;
     }
 }
コード例 #2
0
 void Close()
 {
     if (image_handle != IntPtr.Zero)
     {
         K4A.k4a_image_release(image_handle);
         image_handle = IntPtr.Zero;
     }
 }
コード例 #3
0
 /// <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;
     }
 }
コード例 #4
0
    // 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();
    }
コード例 #5
0
        /// <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());
            }
        }
コード例 #6
0
        /// <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);
            }
        }
コード例 #7
0
        /// <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'
            }
        }
コード例 #8
0
        /// <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);
            }
        }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
        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);
        }
コード例 #11
0
        /// <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);
            }
        }
コード例 #12
0
ファイル: Capture.cs プロジェクト: stahlechris/BodyTracking
        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);
        }
コード例 #13
0
ファイル: Capture.cs プロジェクト: stahlechris/BodyTracking
 public Image GetColorImage()
 {
     return(new Image(K4A.k4a_capture_get_color_image(capture_handle)));
 }
コード例 #14
0
 IntPtr getBuffer()
 {
     return(K4A.k4a_image_get_buffer(image_handle));
 }
コード例 #15
0
 UInt64 getSize()
 {
     return(K4A.k4a_image_get_size(image_handle));
 }
コード例 #16
0
 ImageFormat getFormat()
 {
     return((ImageFormat)K4A.k4a_image_get_format(image_handle));
 }
コード例 #17
0
 int getWidth()
 {
     return(K4A.k4a_image_get_width_pixels(image_handle));
 }
コード例 #18
0
 int getHeight()
 {
     return(K4A.k4a_image_get_height_pixels(image_handle));
 }
コード例 #19
0
 /// <summary>
 /// カメラを停止する Stop the camera
 /// </summary>
 public void StopCamera()
 {
     K4A.k4a_device_stop_cameras(device_handle);
 }
コード例 #20
0
 int getStride()
 {
     return(K4A.k4a_image_get_stride_bytes(image_handle));
 }
コード例 #21
0
 UInt64 getTimestamp()
 {
     return(K4A.k4a_image_get_timestamp_usec(image_handle));
 }