示例#1
0
        void saliencyEngine(object state)
        {
            lock (lockThis)
            {
                using (ColorFrame frame = colorRef.AcquireFrame())
                {
                    // It's possible that we skipped a frame or it is already gone
                    if (frame == null)
                    {
                        return;
                    }

                    size = Convert.ToUInt32(frame.FrameDescription.Height * frame.FrameDescription.Width * 4);
                    frame.CopyConvertedFrameDataToIntPtr(kinect.Camera.PinnedImageBuffer, size, ColorImageFormat.Bgra);

                    frame.Dispose();

                    colorRef = null;

                    UpdateVisualSaliency(vs, kinect.Camera.PinnedImageBuffer);
                    Spoint = GetSalientPoint(vs);

                    saliency[currentId % 10] = Spoint;
                    if (currentId == 10)
                    {
                        currentId = 0;
                    }
                    else
                    {
                        currentId++;
                    }

                    saliencySecondsTimer_Tick();
                }
            }
        }
示例#2
0
 private static extern void SaliencyMap(ref SalientPoint image, int numtemporal, int numspatial, float firsttau, int firstrad, int wFrameResized);
        void saliencySecondsTimer_Tick(object sender, EventArgs e)
        {

            if (saliencyIsActive == true)
            {
                SalientPoint avgPoint = new SalientPoint();
                uint sumX = 0, sumY = 0;
                for (int i = 0; i < saliency.ToArray().Length; i++)
                {
                    sumX += saliency[i].x;
                    sumY += saliency[i].y;
                }
                avgPoint.x = (uint)(sumX / saliency.Length);
                avgPoint.y = (uint)(sumY / saliency.Length);

                Dispatcher.BeginInvoke((System.Threading.ThreadStart)delegate
                {
                    Canvas.SetLeft(salientPoint, avgPoint.x);
                    Canvas.SetTop(salientPoint, avgPoint.y);
                });
                environment.virtualsaliency_xy = new List<float> { avgPoint.x, avgPoint.y };
            }
        }
 private static extern void SaliencyMap(ref SalientPoint image, int numtemporal, int numspatial, float firsttau, int firstrad, int wFrameResized);
        public void saliencyEngine()
        {
            while (kinect.frameReady.WaitOne())
            {
                if (saliencyIsActive == true)
                {
                    try
                    {
                        UpdateVisualSaliency(vs, pinnedImageBuffer);
                        Spoint = GetSalientPoint(vs);

                        saliency[currentId % 30] = Spoint;
                        currentId++;
                    }
                    catch (Exception ex) 
                    {
                        Console.WriteLine("Error Saliency" + ex.Message);
                    }
                      
                }
            }
        }