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); }
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窗口也自然关闭了) }
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(); }; } }
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; }); }
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(); }
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); } } }
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 = ""; }; }
////////////////////////////////////////////////////// // 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); }
//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)); } }
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(); }; }
// 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(); } }
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; }
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; } }
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(); }; } }
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"); }
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)); }
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); } }
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)); }
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); }
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(); }
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); }
/// <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)); }
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)); }
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(); }