Example #1
0
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        public new void Dispose()
        {
            base.Dispose();

            if (m_pViewStyle != null)
            {
                m_pViewStyle.StyleChanged -= new ViewStyleChangedEventHandler(m_pViewStyle_StyleChanged);
                m_pViewStyle = null;
            }

            if (m_pPaintGraphics != null)
            {
                m_pPaintGraphics.Dispose();
                m_pPaintGraphics = null;
            }
            if (m_pPaintBuffer != null)
            {
                m_pPaintBuffer.Dispose();
                m_pPaintBuffer = null;
            }

            if (m_pWText != null)
            {
                m_pWText.LanguageChanged -= new EventHandler(m_pWText_LanguageChanged);
                m_pWText = null;
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            MCvPoint3D32f[] _points;
            Mat             _left        = CvInvoke.Imread("imL.png", ImreadModes.Color);
            Mat             _right       = CvInvoke.Imread("imR.png", ImreadModes.Color);
            Mat             disparityMap = new Mat();

            Stopwatch watch     = Stopwatch.StartNew();
            UMat      leftGray  = new UMat();
            UMat      rightGray = new UMat();

            CvInvoke.CvtColor(_left, leftGray, ColorConversion.Bgr2Gray);
            CvInvoke.CvtColor(_right, rightGray, ColorConversion.Bgr2Gray);
            Mat points = new Mat();

            Computer3DPointsFromStereoPair(leftGray, rightGray, disparityMap, points);
            watch.Stop();
            long disparityComputationTime = watch.ElapsedMilliseconds;

            Mat pointsArray     = points.Reshape(points.NumberOfChannels, points.Rows * points.Cols);
            Mat colorArray      = _left.Reshape(_left.NumberOfChannels, _left.Rows * _left.Cols);
            Mat colorArrayFloat = new Mat();

            colorArray.ConvertTo(colorArrayFloat, DepthType.Cv32F);
            WCloud cloud = new WCloud(pointsArray, colorArray);

            Emgu.CV.Viz3d     v           = new Emgu.CV.Viz3d("Simple stereo reconstruction");
            WText             wtext       = new WText("3d point cloud", new System.Drawing.Point(20, 20), 20, new MCvScalar(255, 255, 255));
            WCoordinateSystem wCoordinate = new WCoordinateSystem(1.0);

            v.ShowWidget("text", wtext);
            //v.ShowWidget("coordinate", wCoordinate);
            v.ShowWidget("cloud", cloud);
            v.Spin();
        }
        public static Viz3d GetViz3d(Mat left, Mat right)
        {
            Mat disparityMap = new Mat();

            Stopwatch watch     = Stopwatch.StartNew();
            UMat      leftGray  = new UMat();
            UMat      rightGray = new UMat();

            CvInvoke.CvtColor(left, leftGray, ColorConversion.Bgr2Gray);
            CvInvoke.CvtColor(right, rightGray, ColorConversion.Bgr2Gray);
            Mat points = new Mat();

            Computer3DPointsFromStereoPair(leftGray, rightGray, disparityMap, points);
            watch.Stop();
            long disparityComputationTime = watch.ElapsedMilliseconds;

            Mat pointsArray     = points.Reshape(points.NumberOfChannels, points.Rows * points.Cols);
            Mat colorArray      = left.Reshape(left.NumberOfChannels, left.Rows * left.Cols);
            Mat colorArrayFloat = new Mat();

            colorArray.ConvertTo(colorArrayFloat, DepthType.Cv32F);
            WCloud cloud = new WCloud(pointsArray, colorArray);

            Emgu.CV.Viz3d     v           = new Emgu.CV.Viz3d("Simple stereo reconstruction");
            WText             wtext       = new WText("3d point cloud", new System.Drawing.Point(20, 20), 20, new MCvScalar(255, 255, 255));
            WCoordinateSystem wCoordinate = new WCoordinateSystem(1.0);

            v.ShowWidget("text", wtext);
            //v.ShowWidget("coordinate", wCoordinate);
            v.ShowWidget("cloud", cloud);
            return(v);
        }
Example #4
0
        public static Viz3d GetViz3d(Mat pointMat, Mat colorMat)
        {
            WCloud cloud = new WCloud(pointMat, colorMat);

            Emgu.CV.Viz3d v     = new Emgu.CV.Viz3d("Simple stereo reconstruction");
            WText         wtext = new WText("3d point cloud", new System.Drawing.Point(20, 20), 20,
                                            new MCvScalar(255, 255, 255));
            WCoordinateSystem wCoordinate = new WCoordinateSystem(1.0);

            v.ShowWidget("text", wtext);
            //v.ShowWidget("coordinate", wCoordinate);
            v.ShowWidget("cloud", cloud);
            return(v);
        }
Example #5
0
        static void Main(string[] args)
        {
            MCvPoint3D32f[] _points;
            Mat             _left        = CvInvoke.Imread("imL.png", ImreadModes.Color);
            Mat             _right       = CvInvoke.Imread("imR.png", ImreadModes.Color);
            Mat             disparityMap = new Mat();

            Stopwatch watch     = Stopwatch.StartNew();
            UMat      leftGray  = new UMat();
            UMat      rightGray = new UMat();

            CvInvoke.CvtColor(_left, leftGray, ColorConversion.Bgr2Gray);
            CvInvoke.CvtColor(_right, rightGray, ColorConversion.Bgr2Gray);
            Mat points = new Mat();

            Computer3DPointsFromStereoPair(leftGray, rightGray, disparityMap, points);
            watch.Stop();
            long disparityComputationTime = watch.ElapsedMilliseconds;

            Mat pointsArray     = points.Reshape(points.NumberOfChannels, points.Rows * points.Cols);
            Mat colorArray      = _left.Reshape(_left.NumberOfChannels, _left.Rows * _left.Cols);
            Mat colorArrayFloat = new Mat();

            colorArray.ConvertTo(colorArrayFloat, DepthType.Cv32F);
            WCloud cloud = new WCloud(pointsArray, colorArray);

            // My attempt to grab a pixel.
            Image <Bgr, Byte> image = disparityMap.ToImage <Bgr, Byte>();

            int  threshhold  = 190;
            bool objectFound = false;

            for (int i = 0; i < image.Rows; i++)
            {
                for (int j = 0; j < disparityMap.Cols; j++)
                {
                    // If it's below the threshhold black it out.
                    if (image.Data[i, j, 0] < threshhold)
                    {
                        image.Data[i, j, 2] = 0;
                        image.Data[i, j, 1] = 0;
                        image.Data[i, j, 0] = 0;
                    }
                    else
                    {
                        objectFound = true;
                        Console.Write("(" + image.Data[i, j, 0].ToString().PadLeft(3, '0') + ","); // Blue;
                        Console.Write(image.Data[i, j, 1].ToString().PadLeft(3, '0') + ",");       // Green;
                        Console.Write(image.Data[i, j, 2].ToString().PadLeft(3, '0') + ")");       // Red;
                    }
                }
                Console.WriteLine(); // new row end line;
            }

            // 2D Disparity Display
            Mat show = new Mat();

            disparityMap.ConvertTo(show, DepthType.Cv8U);
            CvInvoke.Imshow("Disparity", show);

            disparityMap.ConvertTo(show, DepthType.Cv8U);
            CvInvoke.Imshow("Disparity Restricted", image);


            //try
            //{
            //    if (objectFound)
            //    {
            //        SerialPort serialPort1 = new SerialPort("COM6", 9600);
            //        serialPort1.Open();
            //        serialPort1.WriteLine("");
            //        System.Threading.Thread.Sleep(1000);
            //        serialPort1.WriteLine("");
            //        serialPort1.Close();
            //    }
            //}
            //catch (Exception ex)
            //{

            //}
            // 3D IMAGE DISPLAY
            Emgu.CV.Viz3d     v           = new Emgu.CV.Viz3d("Simple stereo reconstruction");
            WText             wtext       = new WText("3d point cloud", new System.Drawing.Point(20, 20), 20, new MCvScalar(255, 255, 255));
            WCoordinateSystem wCoordinate = new WCoordinateSystem(1.0);

            v.ShowWidget("text", wtext);
            //v.ShowWidget("coordinate", wCoordinate);
            v.ShowWidget("cloud", cloud);
            v.Spin();

            CvInvoke.WaitKey(0);
        }