public static Image <Bgr, byte> ShuffledBoardPreview(int board_size, int[] board_config, Image <Bgr, byte>[] tiles, bool numbers = true, bool borders = true)
        {
            Image <Bgr, byte> shuffled = new Image <Bgr, byte>(board_size * tiles[0].Width, board_size * tiles[0].Height);
            Rectangle         rect     = new Rectangle(0, 0, tiles[0].Width, tiles[0].Height);
            MCvFont           font     = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);

            //
            for (int row = 0, index = 0; row < board_size; row++)
            {
                for (int col = 0; col < board_size; col++, index++)
                {
                    if (board_config[index] < board_config.Length)  // empty tile should not be drawn
                    {
                        CvInvoke.cvCopy(tiles[board_config[index] - 1], shuffled.GetSubRect(rect), IntPtr.Zero);
                    }
                    //
                    if (borders)
                    {
                        shuffled.Draw(rect, new Bgr(Color.Green), 2);
                    }
                    //
                    if (numbers)
                    {
                        shuffled.Draw(String.Format("{0,2:d}", board_config[index]), ref font,
                                      new Point((int)(((double)col + 0.2) * rect.Width), (int)(((double)row + 0.6) * rect.Height)),
                                      new Bgr(Color.Red));
                    }
                    //
                    rect.Offset(rect.Width, 0);
                }
                rect.Offset(-board_size * rect.Width, rect.Height);
            }
            //
            return(shuffled);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            // 新建窗体的名称(类名、标题)
            // 这个窗体与Console窗体不同,是一个独立的窗体
            string windowName = "Hello World";

            // 等价于OpenCV 中的 cvNamedWindow/ namedWindow
            CvInvoke.cvNamedWindow(windowName);

            // 泛型(模板), RGB彩色图像, 每个通道用一个Byte表示
            // 初始化一个背景图像400*200大小,画刷颜色RGB(0,0,255)纯蓝色
            Image <Bgr, Byte> image = new Image <Bgr, Byte>(400, 200, new Bgr(255, 0, 0));

            // 创建字体,内置的script手写体,水平/垂直方向缩放比例为1.0和1.0
            MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_SCRIPT_COMPLEX, 1.0, 1.0);

            // 在image图像上绘制消息字符串
            string message = "Hello World";

            // 方法Draw的多个重载版本之一:绘制字符串,起始位置(10,80),颜色为纯白色
            image.Draw(message, ref font, new Point(10, 80), new Bgr(255, 255, 255));

            // 等价于cvShowImage/imshow
            CvInvoke.cvShowImage(windowName, image);

            // 等价于cvWaitKey/waitKey 等待按键输入,
            // waitKey(0)表示接受输入后立即返回(执行后续语句)
            CvInvoke.cvWaitKey(0);

            // 销毁窗口(销毁的是cvNamedWindow所创建的,而不是Console窗口)
            CvInvoke.cvDestroyWindow(windowName);
            // 销毁窗口后程序执行完毕退出(Console窗口也自然关闭了)
        }
Beispiel #3
0
        private static void ProcessFrame(object sender, EventArgs e)
        {
            detectedFaces.Clear();
            //Get Current Frame
            currentFrame = Capture.QueryFrame();
            Image <Gray, byte> grayFrame = currentFrame.Convert <Gray, byte>();

            //Detect Faces in current frame
            FaceDetection.Detect(grayFrame, detectedFaces);

            Description = "";
            String  name = "";
            MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d);

            foreach (var box in detectedFaces)
            {
                //Recognize each face
                name = FaceRecognition.Recognize(grayFrame, box, 2000);

                //Draw box and name Around Face
                currentFrame.Draw(box, new Bgr(Color.Blue), 2);
                currentFrame.Draw(name, ref font, new Point(box.Left + 5, box.Bottom - 5), new Bgr(Color.Aqua));


                Description += name + " ";
            }

            Count = detectedFaces.Count;
            //Display current frame
            Count = detectedFaces.Count;
            ImageBoxOutput.Image = currentFrame;
        }
        private void YokalmaSistemi_Load(object sender, EventArgs e)
        {
            Capture capture1 = new Capture();

            capture1.Start();
            if (capture1 == null)
            {
                MessageBox.Show("Kamera Açılamadı");
            }
            else
            {
                capture1.ImageGrabbed += (a, b) =>
                {
                    var            image      = capture1.RetrieveBgrFrame();
                    var            grayimage1 = image.Convert <Gray, byte>();
                    HaarCascade    haaryuz    = new HaarCascade("haarcascade_frontalface_default.xml");
                    MCvAvgComp[][] Yuzler     = grayimage1.DetectHaarCascade(haaryuz, 1.2, 5, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(15, 15));
                    MCvFont        font       = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);
                    foreach (MCvAvgComp yuz in Yuzler[0])
                    {
                        var sadeyuz = grayimage1.Copy(yuz.rect).Convert <Gray, byte>().Resize(100, 100, INTER.CV_INTER_CUBIC);
                        pic_kucuk_res.Image = sadeyuz.ToBitmap();
                        if (train.IsTrained)
                        {
                            name = train.Recognise(sadeyuz);
                            int match_value = (int)train.Get_Eigen_Distance;
                            image.Draw(name + " ", ref font, new Point(yuz.rect.X - 2, yuz.rect.Y - 2), new Bgr(Color.SteelBlue));
                        }
                        image.Draw(yuz.rect, new Bgr(Color.Purple), 2);
                        //  textBox1.Text = name;
                    }
                    pic_kamera.Image = image.ToBitmap();
                };
            }
        }
Beispiel #5
0
        private void StartScanning()
        {
            Application.Idle += new EventHandler(delegate(object senders, EventArgs ee)
            {
                var mat = cap.QueryFrame();

                Bitmap bitmap = mat.Bitmap;

                Image <Gray, byte> img = new Image <Gray, byte>(bitmap);

                MCvAvgComp[][] rectangles = img.DetectHaarCascade(_cascadeClassifier, 1.2, 0, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new System.Drawing.Size(20, 20));

                foreach (var rect in rectangles[0])
                {
                    mat.Draw(rect.rect, new Bgr(255, 0, 0), 2);
                    img             = new Image <Gray, byte>(bitmap);
                    string name     = FaceRecognition(img);
                    MCvFont mCvFont = new MCvFont(FONT.CV_FONT_HERSHEY_PLAIN, 20, 20);
                    label1.Text     = name;
                    //break;
                }

                imageBox1.Image = mat;
            });
        }
Beispiel #6
0
        public void TestBlobTracking()
        {
            Capture capture = new Capture();

            ImageViewer viewer = new ImageViewer();

            BlobTrackerAutoParam <Gray> param = new BlobTrackerAutoParam <Gray>();

            //param.BlobDetector = new BlobDetector(Emgu.CV.CvEnum.BLOB_DETECTOR_TYPE.CC);
            param.FGDetector = new FGDetector <Gray>(Emgu.CV.CvEnum.FORGROUND_DETECTOR_TYPE.FGD);
            //param.BlobTracker = new BlobTracker(Emgu.CV.CvEnum.BLOBTRACKER_TYPE.CCMSPF);
            param.FGTrainFrames = 10;
            BlobTrackerAuto <Gray> tracker = new BlobTrackerAuto <Gray>(param);

            MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0);

            Application.Idle += new EventHandler(delegate(object sender, EventArgs e)
            {
                tracker.Process(capture.QuerySmallFrame().PyrUp().Convert <Gray, Byte>());

                Image <Gray, Byte> img = tracker.ForgroundMask;
                //viewer.Image = tracker.GetForgroundMask();
                foreach (MCvBlob blob in tracker)
                {
                    img.Draw(Rectangle.Round(blob), new Gray(255.0), 2);
                    img.Draw(blob.ID.ToString(), ref font, Point.Round(blob.Center), new Gray(255.0));
                }
                viewer.Image = img;
            });
            viewer.ShowDialog();
        }
Beispiel #7
0
        public ImageViewer(ImageItem imageItem)
        {
            InitializeComponent();

            Image <Bgr, Byte> image = new Image <Bgr, byte>(imageItem.Path);
            MCvFont           font  = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);

            if (imageItem.Objects != null)
            {
                int objectTypeIndex = 0;
                foreach (var objects in imageItem.Objects)
                {
                    int index = 1;
                    foreach (var subject in objects)
                    {
                        Rectangle rect = subject.Rect;
                        PointF[]  pts  = new PointF[]
                        {
                            new PointF(rect.Left, rect.Bottom),
                            new PointF(rect.Right, rect.Bottom),
                            new PointF(rect.Right, rect.Top),
                            new PointF(rect.Left, rect.Top)
                        };

                        image.DrawPolyline(Array.ConvertAll <PointF, Point>(pts, Point.Round), true, new Bgr(Color.Red), 2);
                        image.Draw(string.Format("{0} {1}", imageItem.Labels[objectTypeIndex], index), ref font, new Point(rect.Left, Math.Max(0, rect.Top - 4)), new Bgr(Color.Red));
                        ++index;
                    }
                    ++objectTypeIndex;
                }
            }

            pictureBox.Image = image.ToBitmap();
        }
        public FormManualTrain(Form1 frm1)
        {
            InitializeComponent();
            browseImage = new OpenFileDialog();

            _form1 = frm1;

            eigenRecog   = new Classifier_Train();
            face         = new HaarCascade("haarcascade_frontalface_default.xml");
            eyeWithGlass = new CascadeClassifier("haarcascade_eye_tree_eyeglasses.xml");
            mydb         = new DBConn();
            minEye       = new Size(10, 10);
            maxEye       = new Size(225, 225);
            font         = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d);
            if (File.ReadAllText("setting.txt") != null)
            {
                folderPath = File.ReadAllText("setting.txt");
            }
            else
            {
                FolderBrowserDialog b = new FolderBrowserDialog();
                b.Description = "Please select your installation path";
                DialogResult r = b.ShowDialog();
                if (r == DialogResult.OK) // Test result.
                {
                    folderPath = b.SelectedPath;
                    Console.WriteLine(folderPath);
                    File.WriteAllText(@"setting.txt", folderPath);
                    MessageBox.Show("Path is at " + folderPath);
                }
            }
        }
Beispiel #9
0
        public void Camera()
        {
            Capture capture = new Capture();

            capture.Start();
            var         step     = "0s";
            HaarCascade haareyes = new HaarCascade("haarcascade_eye.xml");

            capture.ImageGrabbed += (x, y) =>
            {
                var image = capture.RetrieveBgrFrame();
                if (image != null)
                {
                    var grayimage = image.Convert <Gray, byte>();

                    MCvAvgComp[][] eyes = grayimage.DetectHaarCascade(haareyes, 1.2, 10, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(15, 15));
                    foreach (MCvAvgComp hEye in eyes[0])
                    {
                        image.Draw(hEye.rect, new Bgr(Color.Blue), 1);
                        MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.3, 0.3);
                        image.Draw("Goz", ref font, new Point(hEye.rect.X, hEye.rect.Y), new Bgr(Color.Yellow));
                        imagepicture.LoadAsync("C:\\Users\\EysanGuc\\source\\repos\\Shy-Panda\\Shy-Panda\\Image\\Shy_panda.png");
                        step = "1";
                    }
                }
                if (step != "1")
                {
                    imagepicture.LoadAsync("C:\\Users\\EysanGuc\\source\\repos\\Shy-Panda\\Shy-Panda\\Image\\panda_dance.gif");
                }
                FaceImagepicture.Image = image.ToBitmap();
                step = "";
            };
        }
Beispiel #10
0
        //////////////////////////////////////////////////////
        //               E T I Q U E T A D O                //
        //////////////////////////////////////////////////////

        public Image <Bgr, byte> etiquetarDebug()
        {
            Bitmap mapa = printBW();

            Emgu.CV.Image <Gray, Byte> img      = new Image <Gray, Byte>(mapa);
            Emgu.CV.Image <Bgr, Byte>  imgColor = new Image <Bgr, Byte>(mapa);
            double tamanoplaneta    = mapa.Size.Height * mapa.Size.Width;
            double umbralcontinente = tamanoplaneta * 0.015;
            double umbralislita     = tamanoplaneta * 0.000008;

            Regiones = new HashSet <Masslabelling.Region>();

            Regiones = Mass.GetRegions(img, TIPOREGION.TIERRA, umbralcontinente);

            //Emgu.CV.Structure.MIplImage image = img.MIplImage;
            MCvFont fuente = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX_SMALL, 0.5, 0.5);

            Parallel.ForEach <Masslabelling.Region>(Regiones, (region) =>
            {
                if (region.Area > umbralislita)
                {
                    imgColor.Draw(region.Marco.ToRect(), new Bgr(region.Col), 2);
                    imgColor.Draw(region.Nombre, ref fuente, region.Marco.Location, new Bgr(region.Col));
                    imgColor.Draw(new CircleF(region.Centroide, 1), new Bgr(region.Col), 2);
                }
            });

            return(imgColor);
        }
Beispiel #11
0
        //display and check the Bomb

        private void displayBomb()
        {
            // defing the font variable used to write on top of the image
            MCvFont            font      = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_DUPLEX, 1d, 1d);
            MCvFont            fontSmall = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, .25d, .5d);
            Image <Gray, byte> temp;

            BombList[0] = (new CircleData(new CircleF(new PointF(XYCoordinatesOfBomb[0, 0], XYCoordinatesOfBomb[0, 1]), 10), new Gray(255), 20));
            InputImageFrame.Draw(BombList[0].circle, new Bgr(0, 0, 255), BombList[0].thickness);
            InputImageFrame.Draw("BOMB!", ref fontSmall, new Point(XYCoordinatesOfBomb[0, 0] - 20, XYCoordinatesOfBomb[0, 1] + 5), new Bgr(Color.Blue));
            BombFrame = new Image <Gray, byte>(640, 480, new Gray(1));
            BombFrame.Draw(BombList[0].circle, new Gray(255), 20);

            temp = BombFrame.And(DifferenceFrame);
            temp = temp.ThresholdBinary(new Gray(240), new Gray(255));
            int number = temp.CountNonzero()[0];

            if (number != 0)
            {
                NumberOfHits -= 1;
                InputImageFrame.Draw(new CircleF(new PointF(XYCoordinatesOfBomb[0, 0], XYCoordinatesOfBomb[0, 1]), 10), new Bgr(0, 0, 0), 50);

                InputImageFrame.Draw("Oops!", ref font, new Point(XYCoordinatesOfBomb[0, 0] - 40, XYCoordinatesOfBomb[0, 1] + 10), new Bgr(Color.White));
            }
        }
Beispiel #12
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Capture capture = new Capture();

            capture.Start();
            capture.ImageGrabbed += (a, b) =>
            {
                var            image     = capture.RetrieveBgrFrame();
                var            grayimage = image.Convert <Gray, byte>();
                HaarCascade    haaryuz   = new HaarCascade("haarcascade_frontalface_alt2.xml");
                MCvAvgComp[][] Yuzler    = grayimage.DetectHaarCascade(haaryuz, 1.2, 5, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(15, 15));
                MCvFont        font      = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);
                foreach (MCvAvgComp yuz in Yuzler[0])
                {
                    var sadeyuz = grayimage.Copy(yuz.rect).Convert <Gray, byte>().Resize(100, 100, INTER.CV_INTER_CUBIC);
                    //Resimler aynı boyutta olmalıdır. O yüzden Resize ile yeniden boyutlandırma yapılmıştır. Aksi taktirde Classifier_Train sınıfının 245. satırında hata alınacaktır.
                    pictureBox2.Image = sadeyuz.ToBitmap();
                    if (train != null)
                    {
                        if (train.IsTrained)
                        {
                            string name        = train.Recognise(sadeyuz);
                            int    match_value = (int)train.Get_Eigen_Distance;
                            image.Draw(name + " ", ref font, new Point(yuz.rect.X - 2, yuz.rect.Y - 2), new Bgr(Color.LightGreen));
                            label1.Text = name;
                        }
                    }
                    image.Draw(yuz.rect, new Bgr(Color.Red), 2);
                }
                yuz = label1.Text;
                pictureBox1.Image = image.ToBitmap();
            };
        }
Beispiel #13
0
        // function to check a valid hit in the program
        private void CheckForAHit()
        {
            Image <Gray, byte> temp;

            for (int i = 0; i < NumberOfBalls; i++)
            {
                temp = Balls[i].And(DifferenceFrame);
                temp = temp.ThresholdBinary(new Gray(240), new Gray(255));
                int number = temp.CountNonzero()[0];

                if (number != 0)
                {
                    MCvFont font      = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_DUPLEX, 1d, 1d);
                    MCvFont fontSmall = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, .25d, .5d);
                    NumberOfHits++;
                    Score++;
                    bomb = new NAudio.Wave.WaveFileReader(Constants.BOMB_EXPLOSION_FILE_LOC);

                    //TODO: move the initlization out and make sure that only once the init happens
                    output = new NAudio.Wave.DirectSoundOut();
                    output.Init(new NAudio.Wave.WaveChannel32(bomb));
                    Random r = new Random();
                    InputImageFrame.Draw(new CircleF(new PointF(XYCoordinatesOfBalls[i, 0], XYCoordinatesOfBalls[i, 1]), 10), new Bgr(r.Next(0, 255), 0, 255), 50);

                    InputImageFrame.Draw("Hit", ref font, new Point(XYCoordinatesOfBalls[i, 0] - 20, XYCoordinatesOfBalls[i, 1] + 10), new Bgr(Color.White));
                    generateXYCoordiantesForBall(i);
                }
            }
            if (output != null)
            {
                output.Play();
            }
        }
Beispiel #14
0
        public void ProcessFrame(object sender, EventArgs arg)
        {
            Image <Bgr, Byte> frame = _capture.RetrieveBgrFrame().Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR).Copy();;
            int     detected_human  = 0;
            long    processingTime;
            MCvFont f = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX_SMALL, 0.6, 0.7);

            List <Rectangle> dataBound = new List <Rectangle>();
            List <string>    dataTrain = new List <string>();

            string fileSawi    = "D:\\sawi.txt";
            Size   winSizeSawi = new Size(64, 128);

            Rectangle[] resultCabinet = findObject.findObjects(frame, out processingTime, winSizeSawi, fileSawi);
            foreach (Rectangle rect in resultCabinet)
            {
                ++detected_human;
                frame.Draw(rect, new Bgr(Color.Red), 2);
                Point HOGLocation = rect.Location;
                X = HOGLocation.X;
                Y = HOGLocation.Y;

                frame.Draw("[" + detected_human + "]" + "botol", ref f, new Point(rect.Left, rect.Top - 5), new Bgr(Color.Yellow));
            }

            imageBox1.Image = frame;
        }
Beispiel #15
0
        private void Draw321OnScreen()
        {
            //TODO : use a better font
            MCvFont largeFont = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 4d, 4d);

            if (processingStarted == false)
            {
                NumberOfHits      = 0;
                timeStamp         = 1;
                processingStarted = true;
            }


            // TODO : use better fonts
            switch (timeStamp)
            {
            case 1:
                InputImageFrame.Draw("3", ref largeFont, new Point(280, 240), new Bgr(Color.Red));
                break;

            case 2:
                InputImageFrame.Draw("2", ref largeFont, new Point(280, 240), new Bgr(Color.Yellow));
                break;

            case 3:
                InputImageFrame.Draw("1", ref largeFont, new Point(280, 240), new Bgr(Color.Green));
                break;

            default:
                ready = true;
                break;
            }
        }
Beispiel #16
0
        public OgrKayit()
        {
            InitializeComponent();
            updateComboBoxClass();
            Capture capture = new Capture();

            capture.Start();
            if (capture == null)
            {
                MessageBox.Show("Kamera Açılamadı");
            }
            else
            {
                capture.ImageGrabbed += (a, b) =>
                {
                    var            image     = capture.RetrieveBgrFrame();
                    var            grayimage = image.Convert <Gray, byte>();
                    HaarCascade    haaryuz   = new HaarCascade("haarcascade_frontalface_default.xml");
                    MCvAvgComp[][] Yuzler    = grayimage.DetectHaarCascade(haaryuz, 1.2, 5, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(15, 15));
                    MCvFont        font      = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);
                    foreach (MCvAvgComp yuz in Yuzler[0])
                    {
                        var sadeyuz = grayimage.Copy(yuz.rect).Convert <Gray, byte>().Resize(100, 100, INTER.CV_INTER_CUBIC);
                        image.Draw(yuz.rect, new Bgr(Color.Red), 2);
                        pic_kucuk_res.Image = sadeyuz.ToBitmap();
                    }
                    pic_box_kamera.Image = image.ToBitmap();
                };
            }
        }
Beispiel #17
0
        public void GenerateLogo()
        {
            Image <Bgr, Byte> semgu = new Image <Bgr, byte>(160, 72, new Bgr(0, 0, 0));
            Image <Bgr, Byte> scv   = new Image <Bgr, byte>(160, 72, new Bgr(0, 0, 0));
            MCvFont           f1    = new MCvFont(CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, 1.5, 1.5);
            MCvFont           f2    = new MCvFont(CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 1.6, 2.2);

            semgu.Draw("Emgu", ref f1, new Point(6, 50), new Bgr(55, 155, 255));
            semgu._Dilate(1);
            scv.Draw("CV", ref f2, new Point(50, 60), new Bgr(255, 55, 255));
            scv._Dilate(2);
            Image <Bgr, Byte>  logoBgr = semgu.Or(scv);
            Image <Gray, Byte> logoA   = new Image <Gray, byte>(logoBgr.Width, logoBgr.Height);

            logoA.SetValue(255, logoBgr.Convert <Gray, Byte>());
            logoBgr._Not();
            logoA._Not();
            Image <Gray, Byte>[] channels = logoBgr.Split();
            channels = new Image <Gray, byte>[] { channels[0], channels[1], channels[2], new Image <Gray, Byte>(channels[0].Width, channels[0].Height, new Gray(255.0)) };
            Image <Bgra, Byte> logoBgra = new Image <Bgra, byte>(channels);

            logoBgra.SetValue(new Bgra(0.0, 0.0, 0.0, 0.0), logoA);
            logoBgra.Save("EmguCVLogo.gif");

            Image <Bgr, Byte> bg_header = new Image <Bgr, byte>(1, 92);

            for (int i = 0; i < 92; i++)
            {
                bg_header[i, 0] = new Bgr(210, 210 - i * 0.4, 210 - i * 0.9);
            }
            bg_header.Save("bg_header.gif");
        }
Beispiel #18
0
        public static void drawString(string content, Image <Bgr, byte> image, System.Drawing.Point bottomleft, double size, Color color)
        {
            MCvFont f = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, size, size);

            f.thickness = 1;
            image.Draw(content, ref f, bottomleft, new Bgr(color));
        }
Beispiel #19
0
        public Form1()
        {
            InitializeComponent();

            face         = new HaarCascade("haarcascade_frontalface_default.xml");
            calcface     = new HaarCascade("haarcascade_frontalface_default.xml");
            eyeWithGlass = new CascadeClassifier("haarcascade_eye_tree_eyeglasses.xml");
            nose         = new CascadeClassifier("haarcascade_mcs_nose.xml");
            mouth        = new CascadeClassifier("haarcascade_mcs_mouth.xml");

            mydb = new DBConn();

            recogNameResult     = new List <string>();
            recogDistanceResult = new List <double>();
            minEye   = new Size(10, 10);
            maxEye   = new Size(225, 225);
            minNose  = new Size(10, 10);
            maxNose  = new Size(225, 225);
            minMouth = new Size(10, 10);
            maxMouth = new Size(225, 225);
            font     = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d);

            //log record
            DateTime now = DateTime.Now;

            logName = now.ToString();
            logName = logName.Replace("/", "").Replace(":", "").Replace(" ", "");
        }
 private void DrawText(string text, int x, int y, MCvFont font)
 {
     CvInvoke.cvPutText(imageToDisplay.Ptr,
                        text,
                        new Point(x, y),
                        ref font,
                        new Gray(grayLevel).MCvScalar);
 }
 public void setUp()
 {
     if ((UnitTestSettings.RENDER_UNIT_TEST_IMAGES) && (_visualDisplay != null))
     {
         _displayImages = true;
         _visualDisplay.setVisible(true);
         _font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
     }
 }
Beispiel #22
0
        private void image1_Initialized(object sender, EventArgs e)
        {
            Image <Bgr, Byte> image = new Image <Bgr, byte>(400, 100, new Bgr(255, 255, 255));
            MCvFont           f     = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_PLAIN, 3.0, 3.0);

            image.Draw("Hello, world", ref f, new System.Drawing.Point(10, 50), new Bgr(255.0, 0.0, 0.0));

            image1.Source = BitmapSourceConvert.ToBitmapSource(image);
        }
        public void DrawTime()
        {
            TimeSpan ts       = TimeSpan.FromMilliseconds(CurrentTimePosition);
            string   time     = string.Format("{0:D2}:{1:D2}:{2:D2}:{3:D3} ", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
            MCvFont  f        = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);
            Size     textSize = f.GetTextSize(time, 0);

            CurrentFrame.Draw(time, ref f, new Point(CurrentFrame.Width - textSize.Width - 10, CurrentFrame.Height - textSize.Height - 10), new Bgr(0, 0, 255));
        }
Beispiel #24
0
        private int DrawAndComputeFingersNum()
        {
            int fingerNum = 0;

            #region hull drawing
            //for (int i = 0; i < filteredHull.Total; i++)
            //{
            //    PointF hullPoint = new PointF((float)filteredHull[i].X,
            //                                  (float)filteredHull[i].Y);
            //    CircleF hullCircle = new CircleF(hullPoint, 4);
            //    currentFrame.Draw(hullCircle, new Bgr(Color.Aquamarine), 2);
            //}
            #endregion

            #region defects drawing
            for (int i = 0; i < defects.Total; i++)
            {
                PointF startPoint = new PointF((float)defectArray[i].StartPoint.X,
                                               (float)defectArray[i].StartPoint.Y);

                PointF depthPoint = new PointF((float)defectArray[i].DepthPoint.X,
                                               (float)defectArray[i].DepthPoint.Y);

                PointF endPoint = new PointF((float)defectArray[i].EndPoint.X,
                                             (float)defectArray[i].EndPoint.Y);

                LineSegment2D startDepthLine = new LineSegment2D(defectArray[i].StartPoint, defectArray[i].DepthPoint);

                LineSegment2D depthEndLine = new LineSegment2D(defectArray[i].DepthPoint, defectArray[i].EndPoint);

                CircleF startCircle = new CircleF(startPoint, 5f);

                CircleF depthCircle = new CircleF(depthPoint, 5f);

                CircleF endCircle = new CircleF(endPoint, 5f);

                //Custom heuristic based on some experiment, double check it before use
                if ((startCircle.Center.Y < box.center.Y || depthCircle.Center.Y < box.center.Y) && (startCircle.Center.Y < depthCircle.Center.Y) && (Math.Sqrt(Math.Pow(startCircle.Center.X - depthCircle.Center.X, 2) + Math.Pow(startCircle.Center.Y - depthCircle.Center.Y, 2)) > box.size.Height / 6.5))
                {
                    fingerNum++;
                    currentFrame.Draw(startDepthLine, new Bgr(Color.Green), 2);
                    //currentFrame.Draw(depthEndLine, new Bgr(Color.Magenta), 2);
                }


                currentFrame.Draw(startCircle, new Bgr(Color.Red), 2);
                currentFrame.Draw(depthCircle, new Bgr(Color.Yellow), 5);
                //currentFrame.Draw(endCircle, new Bgr(Color.DarkBlue), 4);
            }
            #endregion

            MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_DUPLEX, 5d, 5d);
            currentFrame.Draw(fingerNum.ToString(), ref font, new Point(50, 150), new Bgr(Color.White));

            return(fingerNum);
        }
Beispiel #25
0
        public Image <Bgr, Byte> GrabFrame()
        {
            Image <Bgr, Byte> img = new Image <Bgr, byte>(300, 300, new Bgr(255, 255, 255));

            MCvFont f   = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_PLAIN, 1.0, 1.0);
            String  str = DateTime.Now.Ticks.ToString();

            img.Draw(str, ref f, new System.Drawing.Point(50, 150), new Bgr(0, 0, 0));
            return(img);
        }
        public FaceRecognition()
        {
            usersImages = new List <Image <Gray, byte> >();
            usersIds    = new List <String>();

            font            = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX, 0.6d, 0.6d);
            faceHaarCascase = new HaarCascade(pathToHaarCascade);

            GetAllRegisteredUsersInfo();
        }
Beispiel #27
0
        public void DrawMeasurements(int x, int y, double dist, double pfc,
                                     MCvScalar color, Image <Bgr, Byte> src)
        {
            // Measurement text content, position, and font
            string  text_size, text_posn, text_pfc, text_dist;
            Point   point_size, point_posn, point_pfc, point_dist;
            MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5);

            // Fill size string
            text_size  = "Size (pix): ";
            text_size += Convert.ToString(CvInvoke.cvGetSize(src).Width);
            text_size += ", ";
            text_size += Convert.ToString(CvInvoke.cvGetSize(src).Height);

            // Start position, pfc, and distance strings
            text_posn = "Position (pix):  ";
            text_pfc  = "PFC (pix): ";
            text_dist = "Distance (cm): ";

            // If the laser point WAS found
            if ((x > 0) && (y > 0))
            {
                // Fill position string
                text_posn += Convert.ToString(x);
                text_posn += ", ";
                text_posn += Convert.ToString(y);

                // Fill pfc string
                text_pfc += Convert.ToString(pfc);

                // Fill distance string
                text_dist += String.Format("{0:F1}", dist);
            }
            // If the laser pointer was NOT found
            else
            {
                // Fill measurement strings with NULL readings
                text_posn += "NULL, NULL";
                text_pfc  += "NULL";
                text_dist += "NULL";
            }

            // Initialize text position
            point_size = new Point(10, 400);
            point_posn = new Point(10, 420);
            point_pfc  = new Point(10, 440);
            point_dist = new Point(10, 460);

            // Draw text on image
            CvInvoke.cvPutText(src, text_size, point_size, ref font, color);
            CvInvoke.cvPutText(src, text_posn, point_posn, ref font, color);
            CvInvoke.cvPutText(src, text_pfc, point_pfc, ref font, color);
            CvInvoke.cvPutText(src, text_dist, point_dist, ref font, color);
        }
Beispiel #28
0
        /// <summary>
        ///hàm vẽ và đếm số lượng ngón tay
        /// </summary>

        private void DrawAndComputeFingersNum()
        {
            int fingerNum = 0;

            #region defects drawing
            for (int i = 0; i < defects.Total; i++)
            {
                // khởi tạo 3 điểm startpoint , depthpoint và endpoint của convexity defect
                // hàm PointF(single,single) để khởi tạo 1 điểm với các  tọa độ cụ thể
                PointF startPoint = new PointF((float)defectArray[i].StartPoint.X,
                                               (float)defectArray[i].StartPoint.Y);

                PointF depthPoint = new PointF((float)defectArray[i].DepthPoint.X,
                                               (float)defectArray[i].DepthPoint.Y);

                PointF endPoint = new PointF((float)defectArray[i].EndPoint.X,
                                             (float)defectArray[i].EndPoint.Y);
                // hàm  LineSegment2D(Point2D<T>, Point2D<T>) để tạo 1 đoạn thẳng với điểm đầu và điểm cuối cụ thể ?

                LineSegment2D startDepthLine = new LineSegment2D(defectArray[i].StartPoint, defectArray[i].DepthPoint);

                LineSegment2D depthEndLine = new LineSegment2D(defectArray[i].DepthPoint, defectArray[i].EndPoint);

                // hàm  CircleF(PointF, Single) để tạo 1 vòng tròn với bán kính cụ thể

                CircleF startCircle = new CircleF(startPoint, 5f);

                CircleF depthCircle = new CircleF(depthPoint, 5f);

                CircleF endCircle = new CircleF(endPoint, 5f);



                // nếu đoạn nối giữa start point và end point đủ lớn thì sẽ được tính là 1 ngón tay
                if ((startCircle.Center.Y < box.center.Y || depthCircle.Center.Y < box.center.Y) && (startCircle.Center.Y < depthCircle.Center.Y) && (Math.Sqrt(Math.Pow(startCircle.Center.X - depthCircle.Center.X, 2) + Math.Pow(startCircle.Center.Y - depthCircle.Center.Y, 2)) > box.size.Height / 6.5))
                {
                    fingerNum++;
                    // vẽ đoạn màu da cam để xác định số ngón tay từ startpoint đến depthpoint
                    currentFrame.Draw(startDepthLine, new Bgr(Color.Orange), 2);
                }



                currentFrame.Draw(startCircle, new Bgr(Color.Red), 2);    // start point bieu dien bang nốt màu đỏ
                currentFrame.Draw(depthCircle, new Bgr(Color.Yellow), 5); // depthpoint biểu diễn bằng nốt màu vàng
            }
            #endregion


            // hàm MCvFont(FONT, Double, Double) để tạo phông chữ (hiể thị số lượng ngón tay), quy mô theo chiều ngang và dọc
            MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_DUPLEX, 5d, 5d);
            currentFrame.Draw(fingerNum.ToString(), ref font, new Point(50, 150), new Bgr(Color.Black));
        }
Beispiel #29
0
        private void DrewCloseCircle(ref Image <Bgr, Byte> src, CircleF closeCircle, Color color, int yshift = 0)
        {
            if (color == null)
            {
                color = Color.Yellow;
            }
            MCvFont mCvFont = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 1, 1);

            src.Draw(closeCircle, new Bgr(color), 1);
            src.Draw(new Cross2DF(closeCircle.Center, 20, 20), new Bgr(Color.Tomato), 1);
            src.Draw(closeCircle.Radius.ToString(), ref mCvFont, new Point((int)closeCircle.Center.X + 20, (int)closeCircle.Center.Y + 50 * yshift), new Bgr(Color.Yellow));
        }
Beispiel #30
0
        public frmLogin()
        {
            InitializeComponent();
            fuente = new MCvFont(FONT.CV_FONT_HERSHEY_TRIPLEX, 0.5d, 0.5d);
            gris = null;
            listaEntranamientoImagen = new List<Image<Gray, byte>>();
            listaEtiqueta = new List<string>();
            objCon = new clsConexion();
            liveCam.ImageLocation = "img/default.png";

            rostro = new HaarCascade("haarcascade_frontalface_default.xml");    //cargo la deteccion de rostros por cascada
            cargarDatos();
        }