public static void Run() { Mat image = new Mat(); frameSource = Cv2.CreateFrameSource_Camera(0); while (true) { //Grab the current frame frameSource.NextFrame(image); Mat gray = new Mat(); Cv2.CvtColor(image, gray, ColorConversionCodes.BGR2GRAY); Mat blur = new Mat(); Cv2.GaussianBlur(gray, blur, new Size(19, 19), 0); Mat threshImg = new Mat(); double thresh = Cv2.Threshold(gray, threshImg, 150, 255, ThresholdTypes.Otsu); Mat[] contours; Mat hierarchy = new Mat(); Cv2.FindContours(threshImg, out contours, hierarchy, RetrievalModes.Tree, ContourApproximationModes.ApproxSimple); double maxArea = 100; Mat handContour = new Mat(); handContour = contours.OrderByDescending(x => (x.ContourArea())).ToList()[0]; //foreach (var item in contours) //{ // if(item.ContourArea() > maxArea) // { // handContour = item; // break; // } //} Mat hull = new Mat(); Cv2.ConvexHull(handContour, hull); Mat defects = new Mat(); Cv2.ConvexityDefects(handContour, hull, defects); Cv2.ImShow("frame", hull); //Cv2.WaitKey(0); if (Cv2.WaitKey(1) == (int)ConsoleKey.Enter) { break; } } }
public MainWindowVM() { AddContour = new RelayCommand <object>(AddSlotHandler, o => ParkingSlots != null); DeleteContour = new RelayCommand <ParkingSlotVM>(DeleteSlotHandler); SaveToFile = new RelayCommand <object>(SaveToFileHandler); MakeScreenShot = new RelayCommand <object>(MakeScreenShotHandler, _ => !string.IsNullOrEmpty(TrainDataPath)); LoadContours(); Camera = Cv2.CreateFrameSource_Camera(0); _dispatcherTimer.Tick += dispatcherTimer_Tick; _dispatcherTimer.Interval = new TimeSpan(1000); _dispatcherTimer.Start(); }
public void Init() { frameSource = Cv2.CreateFrameSource_Camera(0); }
public void Initialize() { _source = Cv2.CreateFrameSource_Camera(0); //Initialize image frame source }
private void FirstButton_OnClick(object sender, RoutedEventArgs e) { //Mat src = new Mat("lenna.png", ImreadModes.Grayscale); //Mat dst = new Mat(); //Cv2.Canny(src, dst, 10, 300, 3); //SrcImage.Source = bitmapToBitmapImage(OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src)); //if (src.ImWrite("srcLenna.jpg")) //{ // Uri srcUri = new Uri(Path.Combine(Environment.CurrentDirectory, "srcLenna.jpg")); // SrcImage.Source = new BitmapImage(srcUri); //} //if (dst.ImWrite("dstLenna.jpg")) //{ // Uri dstUri = new Uri(Path.Combine(Environment.CurrentDirectory, "dstLenna.jpg")); // DstImage.Source = new BitmapImage(dstUri); //} //VideoCapture capture = new VideoCapture(0); FrameSource frame = Cv2.CreateFrameSource_Camera(0); //using var window = new OpenCvSharp.Window("Camera"); Task.Run(() => { isOpen = true; using var image = new Mat(); using var dst = new Mat(); while (isOpen) { //capture.Read(image); //if (image.Empty()) break; //window.ShowImage(image); //image.ImWrite("camera.jpg"); //Uri dstUri = new Uri(Path.Combine(Environment.CurrentDirectory, "camera.jpg")); //DstImage.Source = new BitmapImage(dstUri); //DstImage.Source = bitmapToBitmapImage//(OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image)); //Cv2.WaitKey(); frame.NextFrame(image); if (image.Empty()) { break; } Dispatcher.Invoke(new Action(() => { var src_gray = new Mat(); Cv2.CvtColor(image, src_gray, ColorConversionCodes.RGB2GRAY); Cv2.Blur(src_gray, src_gray, new OpenCvSharp.Size(2, 2)); Cv2.Canny(src_gray, dst, Threshold1.Value, Threshold2.Value); SrcImage.Source = bitmapToBitmapImage(BitmapConverter.ToBitmap(src_gray)); DstImage.Source = bitmapToBitmapImage(BitmapConverter.ToBitmap(dst)); })); } }); }