コード例 #1
0
    public override Status StartRun()
    {
        handLandmarksStreamPoller = graph.AddOutputStreamPoller <List <NormalizedLandmarkList> >(handLandmarksStream).ConsumeValueOrDie();
        handLandmarksPacket       = new NormalizedLandmarkListVectorPacket();

        handednessStreamPoller = graph.AddOutputStreamPoller <List <ClassificationList> >(handednessStream).ConsumeValueOrDie();
        handednessPacket       = new ClassificationListVectorPacket();

        palmDetectionsStreamPoller = graph.AddOutputStreamPoller <List <Detection> >(palmDetectionsStream).ConsumeValueOrDie();
        palmDetectionsPacket       = new DetectionVectorPacket();

        palmRectsStreamPoller = graph.AddOutputStreamPoller <List <NormalizedRect> >(palmRectsStream).ConsumeValueOrDie();
        palmRectsPacket       = new NormalizedRectVectorPacket();

        handLandmarksPresenceStreamPoller = graph.AddOutputStreamPoller <bool>(handLandmarksPresenceStream).ConsumeValueOrDie();
        handLandmarksPresencePacket       = new BoolPacket();

        palmDetectionsPresenceStreamPoller = graph.AddOutputStreamPoller <bool>(palmDetectionsPresenceStream).ConsumeValueOrDie();
        palmDetectionsPresencePacket       = new BoolPacket();

        sidePacket = new SidePacket();
        sidePacket.Emplace("num_hands", new IntPacket(2));

        return(graph.StartRun(sidePacket));
    }
コード例 #2
0
 static IntPtr HandednessCallback(IntPtr graphPtr, IntPtr packetPtr)
 {
     return(InvokeIfGraphRunnerFound <HandTrackingGraph>(graphPtr, packetPtr, (handTrackingGraph, ptr) => {
         using (var packet = new ClassificationListVectorPacket(ptr, false)) {
             if (handTrackingGraph.TryGetPacketValue(packet, ref handTrackingGraph.prevHandednessMicrosec, out var value))
             {
                 handTrackingGraph.OnHandednessOutput.Invoke(value);
             }
         }
     }).mpPtr);
 }