public MainWindow() { InitializeComponent(); if (false) { try { Calib.FileRectify(); } catch (Exception exc) { Console.WriteLine(exc); } } var al = new List <com.veda.LinearAlg.PointFloat>(); var ar = new List <com.veda.LinearAlg.PointFloat>(); List <com.veda.LinearAlg.CalibRect.StereoPoints> allPts = new List <com.veda.LinearAlg.CalibRect.StereoPoints>(); com.veda.LinearAlg.PointFloat imgSize = null; foreach (var iii in images) { var left = CvInvoke.Imread($"{imageDir}\\Left_{iii}.jpg"); imgSize = new com.veda.LinearAlg.PointFloat(left.Width, left.Height); var right = CvInvoke.Imread($"{imageDir}\\Right_{iii}.jpg"); var corl = convertToPF(netCvLib.calib3d.Calib.findConers(left.ToImage <Gray, Byte>())); al.AddRange(corl); var corr = convertToPF(netCvLib.calib3d.Calib.findConers(right.ToImage <Gray, Byte>())); ar.AddRange(corr); allPts.Add(new com.veda.LinearAlg.CalibRect.StereoPoints { Left = corl, Right = corr }); //File.WriteAllLines($"{imageDir}\\Left_{iii}.txt", cornerToString(corl)); //File.WriteAllLines($"{imageDir}\\Right_{iii}.txt", cornerToString(corr)); //var ff = com.veda.LinearAlg.Calib.CalcFundm((corl), (corr)); //Console.WriteLine(ff); } Console.WriteLine("F"); var F = com.veda.LinearAlg.Calib.CalcFundm(al.ToArray(), ar.ToArray()); Console.WriteLine(F); calres = com.veda.LinearAlg.CalibRect.Rectify(allPts, imgSize); projWin.Show(); //return; _Capture1 = new VideoCapture(1); _Capture2 = new VideoCapture(0); //We will only use 1 frame ready event this is not really safe but it fits the purpose _Capture1.ImageGrabbed += ProcessFrame; //_Capture2.Start(); //We make sure we start Capture device 2 first _Capture1.Start(); _Capture2.Start(); }
static com.veda.LinearAlg.PointFloat[] convertToPF(System.Drawing.PointF[] p) { var res = new com.veda.LinearAlg.PointFloat[p.Length]; for (int i = 0; i < p.Length; i++) { res[i] = new com.veda.LinearAlg.PointFloat(p[i].X, p[i].Y); } return(res); }