// Use this for initialization
    void Start()
    {
        Debug.Log ("Initialising Network ... ");
        Network.init();
        Debug.Log ("Initialising Port");
        imagePort = new BufferedPortImageRgb();
        Debug.Log ("Open Port");
        imagePort.open (sourcePortName);

        Debug.Log ("Connect Port");
        Network.connect(sourcePortName, destPortName);

        //RenderTexture.active = view;
        resWidth = view.width;
        resHeight = view.height;
        temp2D = new Texture2D(resWidth,resHeight, TextureFormat.ARGB32, false);

        texImage = imagePort.prepare();

        //set resolution and parameters of image
        texImage.resize(resWidth, resHeight);
        texImage.setTopIsLowIndex(false);
        texImage.setQuantum(1);
        texImage.zero();

        System.IntPtr imagePtr = texImage.getRawImage();
        int imageSize = texImage.getRawImageSize();
        byteArray = new byte[imageSize];

        newPtr = Marshal.AllocHGlobal(byteArray.Length);
    }
Example #2
0
        public static void Main(string[] args)
        {
            var serviceProvider = BuildDIContainer();

            // Initialize Yarp
            Network.init();

            using (var videoSource = serviceProvider.GetRequiredService <IVideoSource>())
                using (var audioSource = serviceProvider.GetRequiredService <IAudioSource>())
                    using (var videoPort = new BufferedPortImageRgb())
                        using (var audioPort = new BufferedPortBottle())
                            using (var videoFrameRgbBuffer = new Image <Rgb, byte>(640, 480))
                            {
                                // Stream the video frames to a yarp port
                                videoPort.open("/camera");
                                videoSource.FrameReady += (_, frame) =>
                                {
                                    using (var msg = videoPort.prepare())
                                    {
                                        // Convert the incoming image which is BGR to RGB
                                        var bits = frame.Image.LockBits(new Rectangle(0, 0, frame.Image.Width, frame.Image.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                                        using (var videoFrameBgr = new Image <Bgr, byte>(frame.Image.Width, frame.Image.Height, bits.Stride, bits.Scan0))
                                            CvInvoke.CvtColor(videoFrameBgr, videoFrameRgbBuffer, ColorConversion.Bgr2Rgb);
                                        frame.Image.UnlockBits(bits);

                                        // Send the RGB image over yarp
                                        var handle = GCHandle.Alloc(videoFrameRgbBuffer.Bytes, GCHandleType.Pinned);
                                        msg.setExternal(new SWIGTYPE_p_void(handle.AddrOfPinnedObject(), true), (uint)frame.Image.Width, (uint)frame.Image.Height);
                                        videoPort.write();
                                        videoPort.waitForWrite();
                                        handle.Free();
                                    }
                                };

                                // Stream the audio samples to a yarp port
                                audioPort.open("/microphone");
                                audioSource.SampleReady += (_, sample) =>
                                {
                                    using (var bottle = audioPort.prepare())
                                    {
                                        var handle = GCHandle.Alloc(sample.Data, GCHandleType.Pinned);
                                        bottle.clear();
                                        bottle.add(Value.makeBlob(new SWIGTYPE_p_void(handle.AddrOfPinnedObject(), true), sample.Data.Length));
                                        audioPort.write();
                                        audioPort.waitForWrite();
                                        handle.Free();
                                    }
                                };

                                // Run the sample application
                                RunDemoApplication(videoSource, audioSource);
                            }

            // Explicitely shutdown NLog and Yarp
            Network.fini();
            NLog.LogManager.Shutdown();
        }
        public bool Initialise(string remoteMMCMName)
        {
            if (rpcOut == null)
            {
                rpcOut = new Port();

                guiInstance = 0;
                string localName = "/" + remoteMMCMName + "/remote_gui_" + guiInstance + ":rpc";
                while (Network.exists(localName))
                {
                    guiInstance++;
                    localName = "/" + remoteMMCMName + "/remote_gui_" + guiInstance + ":rpc";
                }
                rpcOut.open(localName);
            }

            if (rpcOut.getOutputCount() <= 0)
            {
                Network.connect(rpcOut.getName().c_str(), "/" + remoteMMCMName + "/rpc");
            }

            if (rpcOut.getOutputCount() <= 0)
            {
                return(false);
            }

            //Display info about the map (change to some panel related organization)
            GetParameters(null, null);

            //Visualizations
            if (activity == null)
            {
                activity = new BufferedPortImageRgb();
                activity.open("/" + remoteMMCMName + "/remote_gui_" + guiInstance + "/activity:i");
                while (!Network.connect("/" + remoteMMCMName + "/activity:o", activity.getName().c_str()))
                {
                    Time.delay(0.5);
                }
            }

            //Handle graphical display of maps
            panel1.Controls.Clear();
            m_activity          = new PictureBox();
            m_activity.Height   = 200;
            m_activity.Width    = 200;
            m_activity.SizeMode = PictureBoxSizeMode.StretchImage;

            //Hook to the double click event (for stimulation purposes)
            //p.DoubleClick += new EventHandler(p_DoubleClick);
            //p.Click += new EventHandler(p_Click);
            panel1.Controls.Add(m_activity);
            return(true);
        }
 public override void Initialise()
 {
     portReal      = new BufferedPortImageRgb();
     portPredicted = new BufferedPortImageRgb();
     portPerceived = new BufferedPortImageRgb();
     portReal.open("/" + mapName + "/" + name + "/real:i");
     portPredicted.open("/" + mapName + "/" + name + "/predicted:o");
     portPerceived.open("/" + mapName + "/" + name + "/perceived:o");
     if (autoconnect_source != null)
     {
         Network.connect(autoconnect_source, YarpModalityVector.getRealPortName(mapName, name));
     }
     base.Initialise();
 }
Example #5
0
        public override bool configure(ResourceFinder rf)
        {
            if (base.configure(rf))
            {
                broadcastDisplay = !rf.check("noDisplay");

                //Open ports for visualizing the activity
                CVZ_TPC ctpc = cvz as CVZ_TPC;
                activity = new BufferedPortImageRgb();
                activity.open("/" + ctpc.name + "/activity:o");
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
 public override bool configure(ResourceFinder rf)
 {
     if (base.configure(rf))
     {
         //Open ports for visualizing the activity
         CVZ_MMCM mmcm = cvz as CVZ_MMCM;
         for (int i = 0; i < mmcm.Layers; i++)
         {
             BufferedPortImageRgb p = new BufferedPortImageRgb();
             p.open("/" + mmcm.name + "/activity/layer_" + i + ":o");
             layersActivity.Add(p);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
    // Use this for initialization
    void Start()
    {
        Network.init();
        if(sourcePortName != null)
        {
            inputImagePort = new BufferedPortImageRgb();
            inputImagePort.open (inputPortName);
            Network.connect(sourcePortName, inputPortName);

            checkImageThread = new YarpImageCheck();
            checkImageThread.imagePort = inputImagePort;
            checkImageThread.Start();
            bool checkInit = checkImageThread.InitVariables();

            if(checkInit)
            {
                Debug.Log("Initialised Correctly");
                image2DTex = new Texture2D(checkImageThread.resWidth,checkImageThread.resHeight,TextureFormat.ARGB32, false);
                image2DTex.wrapMode = TextureWrapMode.Clamp;
                planeRender = plane.GetComponent<Renderer>();

                bodyRenderer = model.GetComponent<Renderer>();
                bodyTexOriginal = bodyRenderer.material.mainTexture as Texture2D;
                bodyColorArrayOrig = bodyTexOriginal.GetPixels32();

                xwidth = bodyTexOriginal.width;
                ywidth = bodyTexOriginal.height;
                body2DTex = new Texture2D(bodyTexOriginal.width,bodyTexOriginal.height,TextureFormat.ARGB32, false);
                body2DTex.wrapMode = TextureWrapMode.Clamp;
                planeBodyRender = planeFace.GetComponent<Renderer>();
            }
            else
            {
                Debug.Log("Could not initialise resolution. No images received");
            }

        }
        else
        {
            Debug.Log("Please specify a source port");
        }
    }
    // Use this for initialization
    void Start()
    {
        Network.init();
        if(sourcePortName != null)
        {
            Debug.Log ("Initialising Network ... ");
            Network.init();
            Debug.Log ("Initialising Port");
            imagePort = new BufferedPortImageRgb();
            Debug.Log ("Open Port");
            imagePort.open (sourcePortName);

            Debug.Log ("Connect Port");
            //TODO initialise but wait for port connection within main code body
            Network.connect(sourcePortName, destPortName);

            writeImageThread = new YarpImageCheckWrite();
            writeImageThread.imagePort = imagePort;
            resWidth = view.width;
            resHeight = view.height;
            writeImageThread.resWidth = resWidth;
            writeImageThread.resHeight = resHeight;

            bool checkInit = writeImageThread.InitVariables();

            if(checkInit)
            {
                Debug.Log("Initialised Correctly");

                temp2D = new Texture2D(resWidth,resHeight, TextureFormat.ARGB32, false);
            }
            else
            {
                Debug.Log("Could not initialise resolution. No images received");
            }
        }
        else
        {
            Debug.Log("Please specify a source port");
        }
    }
 internal static HandleRef getCPtr(BufferedPortImageRgb obj)
 {
     return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
 }
    // Use this for initialization
    void Start()
    {
        Network.init();
        if(sourcePortName != null)
        {
            inputImagePort = new BufferedPortImageRgb();
            bool open = inputImagePort.open (inputPortName);
            Debug.Log ("Port opened: " + open);
            Network.connect(sourcePortName, inputPortName);

            checkImageThread = new YarpImageCheck();
            checkImageThread.imagePort = inputImagePort;
            checkImageThread.Start();
            checkInit = checkImageThread.InitVariables();
            Debug.Log(checkImageThread.iters);
            if(checkInit)
            {
                Debug.Log("Initialised Correctly");
                image2DTex = new Texture2D(checkImageThread.resWidth,checkImageThread.resHeight,TextureFormat.ARGB32, false);
                image2DTex.wrapMode = TextureWrapMode.Clamp;

                planeRender = plane.GetComponent<Renderer>();
            }
            else
            {
                Debug.Log("Could not initialise resolution. No images received");
            }
        }
        else
        {
            Debug.Log("Please specify a source port");
        }
    }
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(BufferedPortImageRgb obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }