private Hashtable OccupancyChecker() { // Se pintan que aparcamientos estan ocupados. // parkingC = homeForm.parkingC; Bitmap cFrame = null; Bitmap mFrame = null; do { try { cFrame = (Bitmap)currentFrame.Clone(); mFrame = new Bitmap(@"lastImage.jpg"); } catch { cFrame = null; mFrame = null; } } while (cFrame == null || mFrame == null); parkingC.rgb2hsv(cFrame); parkingC.rgb2hsv(mFrame); //MessageBox.Show("Compare process about to begin. The RGB image has been change to HSV colour space, which will shows only Saturation"); int upperCont = parkingC.UpperParkingPoint.Length / 4; int downerCont = parkingC.DownParkingPoints.Length / 4; Bitmap[] upperSlotsFrames = new Bitmap[(upperCont)]; parkingC.UpperParkingSlotsModel = new Bitmap[(upperCont)]; Bitmap[] downParkingSlotsFrames = new Bitmap[(downerCont)]; parkingC.DownParkingSlotsModel = new Bitmap[(downerCont)]; //Bitmap paintedF = new Bitmap(@"currImage.jpg"); Bitmap paintedF = (Bitmap)currentFrame.Clone(); Graphics graphics = Graphics.FromImage(paintedF); parkingSlot parkings = new parkingSlot(); Hashtable parkingList = parkingC.ParkingList; parkings.PaintSlots("A", ref parkingList, upperCont, mFrame, cFrame, upperSlotsFrames, parkingC.UpperParkingSlotsModel, parkingC.UpperParkingPoint, graphics, parkings); parkings.PaintSlots("B", ref parkingList, downerCont, mFrame, cFrame, downParkingSlotsFrames, parkingC.DownParkingSlotsModel, parkingC.DownParkingPoints, graphics, parkings); pictureBox4.Image = paintedF; // pictureBox4.SizeMode = PictureBoxSizeMode.StretchImage; return parkingList; }