public void Refresh(MainWindow MW, string path) { InitializeComponent(); MainWindow = MW; VideoCapture capture = new VideoCapture(path); int framecount = (int)Math.Floor(capture.GetCaptureProperty(CapProp.FrameCount)); capture.SetCaptureProperty(CapProp.PosFrames, framecount / 2); FileName.Content = System.IO.Path.GetFileName(path); VideoPreview.Source = Watcher.ToBitmapSource(capture.QueryFrame().ToImage <Bgr, Byte>()); }
private void SetImageFace(int index) { if (selectedFaces.Count() > 0) { Dispatcher.Invoke(() => { SelectedFaceIndex.Content = index + 1; Face.Source = Watcher.ToBitmapSource(selectedFaces[index]); ClearFaces.Visibility = Visibility.Visible; }); } }
public void SetImagePreview(int index) { if (selectedImages.Count() > 0) { SelectedFaceImageIndex.Content = String.Format("({0}/{1})", index + 1, selectedImages.Count()); PreviewImage.Source = Watcher.ToBitmapSource(selectedImages[index]); FindFaces.Visibility = Visibility.Visible; PrevImage.Visibility = Visibility.Visible; NextImage.Visibility = Visibility.Visible; SaveFaceImage.Visibility = Visibility.Visible; ClearFaceImage.Visibility = Visibility.Visible; PutImageHereLabel.Visibility = Visibility.Hidden; } }
void Timer_Tick(object sender, EventArgs e) { //Тестить, фиксить try { CurrentFrame = Capture.QueryFrame().ToImage <Bgr, Byte>(); } catch (Exception) { try { Thread.Sleep(100); Capture = new VideoCapture(CameraIndex); } catch (Exception) { CameraDisconected.Visibility = Visibility.Visible; StartStopButton_Click(null, null); } return; } string reportLog = "", log = String.Format("{0} - {1}: ", DateTime.Now.ToString(), CameraName.Content); Image <Bgr, Byte> image = CurrentFrame.Copy(); using (UMat ugray = new UMat()) { CvInvoke.CvtColor(image, ugray, ColorConversion.Bgr2Gray); CvInvoke.EqualizeHist(ugray, ugray); Faces.Clear(); Faces = new List <System.Drawing.Rectangle>(); Faces.AddRange(MainWindow.HaarCascade.DetectMultiScale(ugray, 1.1, 10, new System.Drawing.Size(20, 20))); int recognizeCount = 0; foreach (var face in Faces) { image.Draw(face, new Bgr(0, 0, 255), 3); if (MainWindow.PeopleData.Face.Count() != 0) { var result = MainWindow.FaceRecognizer.Predict(ugray.ToImage <Gray, Byte>().Copy(face).Resize(100, 100, Inter.Cubic)); if (result.Label > 0 && result.Distance <= 100) { recognizeCount++; string name = MainWindow.PeopleData.Name[result.Label - 1]; image.Draw(100 - (int)result.Distance + " " + name, new System.Drawing.Point(face.X, face.Y - 10), FontFace.HersheyComplex, 0.8, new Bgr(0, 0, 255)); reportLog += name + "; "; } } } int unknownFaces = Faces.Count() - recognizeCount; if (unknownFaces > 0) { reportLog += unknownFaces + " неизвестных"; } else if (reportLog == "") { reportLog = " ---"; } if (reportLog != prevReportLog) { MainWindow.Logs.Add(log + reportLog); } prevReportLog = reportLog; } VideoStream.Source = Watcher.ToBitmapSource(image); RecognizeCount.Content = "(" + Faces.Count() + ")"; }