diff --git a/.classpath b/.classpath deleted file mode 100644 index 92b9cb8..0000000 --- a/.classpath +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore index 0133c21..66c928e 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,6 @@ hs_err_pid* target *log.txt **/.vscode +.classpath +.settings +.metadata diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index abdea9a..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs deleted file mode 100644 index d4313d4..0000000 --- a/.settings/org.eclipse.jdt.apt.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 99a63d5..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,9 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 -org.eclipse.jdt.core.compiler.compliance=11 -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.processAnnotations=disabled -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=11 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index c88a90e..ebe4519 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -4,7 +4,7 @@ org.baxter.disco ocr Disco OCR Accuracy Over Life Testing - 4.2.0 + 4.3.1 Testing Discos for long-term accuracy, using automated optical character recognition. Baxter International diff --git a/finalisedJavaUML.xmi b/finalisedJavaUML.xmi deleted file mode 100644 index 27b719c..0000000 --- a/finalisedJavaUML.xmi +++ /dev/null @@ -1,195 +0,0 @@ - - - - - umbrello uml modeller 2.32.3 http://umbrello.kde.org - 1.7.3 - UnicodeUTF8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index 71dc1f0..2a75adf 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.baxter.disco ocr - 4.3.0 + 4.3.1 jar Disco OCR Accuracy Over Life Testing Testing Discos for long-term accuracy, using automated optical character recognition. diff --git a/src/main/java/org/baxter/disco/ocr/Cli.java b/src/main/java/org/baxter/disco/ocr/Cli.java index 4d157e8..4a1f9b7 100644 --- a/src/main/java/org/baxter/disco/ocr/Cli.java +++ b/src/main/java/org/baxter/disco/ocr/Cli.java @@ -18,14 +18,14 @@ import java.util.concurrent.locks.ReentrantLock; * classes). * * @author Blizzard Finnegan - * @version 1.5.0, 10 Feb. 2023 + * @version 1.6.0, 10 Feb. 2023 */ public class Cli { /** * Complete build version number */ - private static final String version = "4.3.0"; + private static final String version = "4.3.1"; /** * Currently saved iteration count. @@ -777,6 +777,16 @@ public class Cli while(!LOCK.tryLock()) {} DataSaving.writeValues(i,resultMap,cameraToFile); LOCK.unlock(); + + //LO detection and avoidance + for(Double result : resultMap.values()) + { + if(result <= 1.0 || result >= 117.0) + { + fixture.goUp(); + try{ Thread.sleep(20000); } catch(Exception e){ ErrorLogging.logError(e); } + } + } //Clear the result map //DO NOT CLEAR camera to file Map. This will change the order of the objects within it resultMap.clear(); diff --git a/src/main/java/org/baxter/disco/ocr/MovementFacade.java b/src/main/java/org/baxter/disco/ocr/MovementFacade.java index 5eea773..07d8bc8 100644 --- a/src/main/java/org/baxter/disco/ocr/MovementFacade.java +++ b/src/main/java/org/baxter/disco/ocr/MovementFacade.java @@ -1,7 +1,9 @@ package org.baxter.disco.ocr; +//Standard imports import java.util.concurrent.locks.Lock; +//Pi4J imports import com.pi4j.Pi4J; import com.pi4j.context.Context; import com.pi4j.io.gpio.digital.DigitalInput; @@ -472,7 +474,7 @@ public class MovementFacade if(runSwitchThread.isAlive()) { exit = true; - try{ Thread.sleep(100); } catch(Exception e){} + try{ Thread.sleep(500); } catch(Exception e){} } pi4j.shutdown(); } @@ -502,8 +504,9 @@ public class MovementFacade public void iterationMovement(boolean prime) { goUp(); - if(prime) pressButton(); + //if(prime) pressButton(); goDown(); + try{ Thread.sleep(100); } catch(Exception e){ ErrorLogging.logError(e); } pressButton(); } } diff --git a/src/main/java/org/baxter/disco/ocr/OpenCVFacade.java b/src/main/java/org/baxter/disco/ocr/OpenCVFacade.java index 38fc092..13c77bb 100644 --- a/src/main/java/org/baxter/disco/ocr/OpenCVFacade.java +++ b/src/main/java/org/baxter/disco/ocr/OpenCVFacade.java @@ -1,8 +1,6 @@ package org.baxter.disco.ocr; -import java.util.Map; -import java.util.Set; - +//Static imports for OpenCV import static org.bytedeco.opencv.global.opencv_imgproc.CV_BGR2GRAY; import static org.bytedeco.opencv.global.opencv_imgproc.THRESH_BINARY; import static org.bytedeco.opencv.global.opencv_imgproc.cvtColor; @@ -12,15 +10,21 @@ import static org.bytedeco.opencv.global.opencv_imgcodecs.cvSaveImage; import static org.bytedeco.opencv.global.opencv_highgui.selectROI; import static org.bytedeco.opencv.global.opencv_core.bitwise_and; +//JavaCV imports import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.CanvasFrame; import org.bytedeco.javacv.FrameGrabber; import org.bytedeco.javacv.OpenCVFrameGrabber; import org.bytedeco.javacv.OpenCVFrameConverter; + +//OpenCV imports import org.bytedeco.opencv.opencv_core.Mat; import org.bytedeco.opencv.opencv_core.IplImage; import org.bytedeco.opencv.opencv_core.Rect; +//Standard imports +import java.util.Map; +import java.util.Set; import java.io.File; import java.time.LocalDateTime; import java.util.ArrayList; @@ -33,7 +37,7 @@ import java.util.List; * Performs image capture, as well as image manipulation. * * @author Blizzard Finnegan - * @version 2.0.0, 15 Feb. 2023 + * @version 2.0.1, 15 Feb. 2023 */ public class OpenCVFacade { @@ -422,11 +426,11 @@ public class OpenCVFacade List imageList = takeBurst(cameraName, compositeFrames); //Debug save of pre-processing image - String fileLocation = ConfigFacade.getImgSaveLocation() + "/debug/" - + ErrorLogging.fileDatetime.format(LocalDateTime.now()) + - "." + cameraName + "-preProcess.jpg"; - cvSaveImage(fileLocation,MAT_CONVERTER.convertToIplImage( - MAT_CONVERTER.convert(imageList.get(0)))); + //String fileLocation = ConfigFacade.getImgSaveLocation() + "/debug/" + // + ErrorLogging.fileDatetime.format(LocalDateTime.now()) + + // "." + cameraName + "-preProcess.jpg"; + //cvSaveImage(fileLocation,MAT_CONVERTER.convertToIplImage( + // MAT_CONVERTER.convert(imageList.get(0)))); ErrorLogging.logError("DEBUG: Size of output image list: " + imageList.size()); Mat finalImage = compose(imageList, threshold, crop, cameraName); diff --git a/src/main/java/org/baxter/disco/ocr/TesseractFacade.java b/src/main/java/org/baxter/disco/ocr/TesseractFacade.java index 8e678d6..cac5626 100644 --- a/src/main/java/org/baxter/disco/ocr/TesseractFacade.java +++ b/src/main/java/org/baxter/disco/ocr/TesseractFacade.java @@ -1,10 +1,16 @@ package org.baxter.disco.ocr; +//Standard imports import java.io.File; import java.util.Scanner; -import org.bytedeco.leptonica.PIX; +//Static import of image reader import static org.bytedeco.leptonica.global.leptonica.pixRead; + +//Import Tesseract-capable image class +import org.bytedeco.leptonica.PIX; + +//Import Tesseract API import org.bytedeco.tesseract.TessBaseAPI; /**