void densityMeasure(int x, int y, int gameScreenWidth, int gameScreenHeight) { switch (densitySession) { case 0: densityMeasureTotalScreen(); break; case 1: densityMeasureROI(x, y, gameScreenWidth, gameScreenHeight); break; case 2: calculatePercentDensity(); break; default : startSession = 5; break; } } void densityMeasureTotalScreen() { // text("Whole Screen", 300, 600); if (millis() - densityTSTime <= 2000) { entireScreen = get(0, 0, screenWidth, screenHeight); // Get pixels of interest and saves as image for valid image path opencv5.loadImage(entireScreen); // Input proper pixels into cv processing opencv5.updateBackground(); //Necessary for background subtraction opencv5.useGray(); //Create grayscale image opencv5.dilate(); //Clean up image opencv5.erode(); opencv5.blur(3); cvscreen = opencv5.getOutput(); //Save computer vision as separate image path euglenaCount = opencv5.findContours(); //Find outline of moving objects - euglena totalCount = euglenaCount.size(); } else { densityROITime = millis(); densitySession = 1; } } void densityMeasureROI(int x, int y, int gameScreenWidth, int gameScreenHeight) { // text("Region of Interest", 300, 600); if (millis() - densityROITime <= 2000) { gameScreen = get(x, y, gameScreenWidth, gameScreenHeight); // Get pixels of interest and saves as image for valid image path opencv4.loadImage(gameScreen); // Input proper pixels into cv processing opencv4.updateBackground(); //Necessary for background subtraction opencv4.useGray(); //Create grayscale image opencv4.dilate(); //Clean up image opencv4.erode(); opencv4.blur(3); o3 = opencv4.getOutput(); //Save computer vision as separate image path //image(o3, x - gameScreenWidth, y); contours = opencv4.findContours(); //Find outline of moving objects - euglena count = contours.size(); } else { displayDensityTime = millis(); densitySession = 2; } } void calculatePercentDensity() { // if (millis() - displayDensityTime <= 4000) { // text(count + " " + totalCount, 600, 900); // delay(1000); percentDensity = ((float)count/ (float)totalCount)*100; densityMeasured = true; // } else { // densityTSTime = millis(); densitySession = 0; // } } void displayDensity() { if(percentDensity != 0) { textSize(56); fill(color(180, 0, 0)); text("% Density: " + percentDensity, 100, 100); } }