This is an automated email from the git hooks/post-receive script. pini pushed a commit to tag upstream/1.1.0_beta1 in repository sikuli.
commit a6913fb2b14894f7760e0ad743dd1984674ece90 Author: Raimund Hocke <[email protected]> Date: Tue Apr 29 09:21:24 2014 +0200 added a feature to inject string parameters into libVisionProxy and used it to allow to tell the TextRecognizer to use a different language for the Tesseract train data file (usage in script: import org.sikuli.script.TextRecognizer as TR; Settings.OcrLanguage = "deu"; TR.reset() ) --- .gitignore | 1 + .../java/org/sikuli/script/TextRecognizer.java | 5 + .../src/main/java/org/sikuli/basics/Settings.java | 1 + Libs/build/mac/runBuildNatives.sh | 8 +- .../META-INF/libs/mac/libs64/libVisionProxy.dylib | Bin 435168 -> 442024 bytes Libs/xbuild.xml | 18 +- .../java/org/sikuli/natives/DebugCategories.java | 2 +- .../main/java/org/sikuli/natives/FindInput.java | 2 +- .../main/java/org/sikuli/natives/FindResult.java | 2 +- .../main/java/org/sikuli/natives/FindResults.java | 2 +- Natives/src/main/java/org/sikuli/natives/Mat.java | 2 +- Natives/src/main/java/org/sikuli/natives/OCR.java | 2 +- .../src/main/java/org/sikuli/natives/OCRChar.java | 2 +- .../src/main/java/org/sikuli/natives/OCRChars.java | 2 +- .../src/main/java/org/sikuli/natives/OCRLine.java | 2 +- .../src/main/java/org/sikuli/natives/OCRLines.java | 2 +- .../main/java/org/sikuli/natives/OCRParagraph.java | 2 +- .../java/org/sikuli/natives/OCRParagraphs.java | 2 +- .../src/main/java/org/sikuli/natives/OCRRect.java | 2 +- .../src/main/java/org/sikuli/natives/OCRText.java | 2 +- .../src/main/java/org/sikuli/natives/OCRWord.java | 2 +- .../src/main/java/org/sikuli/natives/OCRWords.java | 2 +- .../main/java/org/sikuli/natives/TARGET_TYPE.java | 2 +- .../src/main/java/org/sikuli/natives/Vision.java | 10 +- .../main/java/org/sikuli/natives/VisionProxy.java | 2 +- .../java/org/sikuli/natives/VisionProxyJNI.java | 4 +- Natives/src/main/native/Vision/vision.cpp | 202 +++++++++++---------- Natives/src/main/native/Vision/vision.h | 64 ++++--- Natives/src/main/native/Vision/vision.swig | 4 +- Natives/src/main/native/Vision/visionJAVA_wrap.cxx | 71 ++++++-- 30 files changed, 256 insertions(+), 168 deletions(-) diff --git a/.gitignore b/.gitignore index f53b88d..143e172 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ nb* *.iml stuff/ *.versionsBackup +*.log diff --git a/API/src/main/java/org/sikuli/script/TextRecognizer.java b/API/src/main/java/org/sikuli/script/TextRecognizer.java index 48c1b69..177fb96 100755 --- a/API/src/main/java/org/sikuli/script/TextRecognizer.java +++ b/API/src/main/java/org/sikuli/script/TextRecognizer.java @@ -69,6 +69,11 @@ public class TextRecognizer { return _instance; } + public static void reset() { + _instance = null; + Vision.setSParameter("OCRLang", Settings.OcrLanguage); + } + public enum ListTextMode { WORD, LINE, PARAGRAPH }; diff --git a/Basics/src/main/java/org/sikuli/basics/Settings.java b/Basics/src/main/java/org/sikuli/basics/Settings.java index c21194d..fe874bc 100644 --- a/Basics/src/main/java/org/sikuli/basics/Settings.java +++ b/Basics/src/main/java/org/sikuli/basics/Settings.java @@ -227,6 +227,7 @@ public class Settings { public static String BundlePath = null; public static boolean OcrTextSearch = false; public static boolean OcrTextRead = false; + public static String OcrLanguage = "eng"; /** * true = start slow motion mode, false: stop it (default: false) show a visual for SlowMotionDelay seconds (default: diff --git a/Libs/build/mac/runBuildNatives.sh b/Libs/build/mac/runBuildNatives.sh index 2db5a34..7692244 100644 --- a/Libs/build/mac/runBuildNatives.sh +++ b/Libs/build/mac/runBuildNatives.sh @@ -9,7 +9,7 @@ export DEVNATIVE=../../../Natives/src/main/native export DEVLIBS=../../src/main/resources/META-INF/libs/mac/libs$1 echo ----- create JNI header for MacUtil -. runJNISetupForMacUtil.sh +#. runJNISetupForMacUtil.sh echo ----- build libMacUtil.dylib . runBuildMacUtil.sh @@ -17,13 +17,13 @@ echo ----- build libMacUtil.dylib echo ----- create JNI header for MacHotkeyManager #. runJNISetupForMacHotkeyManager.sh -echo ----- build libMacHotkeyManager.dylib -. runBuildMacHotkeyManager.sh +echo ----- build libMacHotkeyManager.dylib +#. runBuildMacHotkeyManager.sh echo ----- use SWIG to create Java interface sources and native wrapper for VisionProxy . runSwigForVision.sh -echo ----- build libVisionProxy.dylib +echo ----- build libVisionProxy.dylib . runBuildVisionProxy.sh echo ----- switch external refs to point to @loader_path/ diff --git a/Libs/src/main/resources/META-INF/libs/mac/libs64/libVisionProxy.dylib b/Libs/src/main/resources/META-INF/libs/mac/libs64/libVisionProxy.dylib index 0b9ee18..3421956 100755 Binary files a/Libs/src/main/resources/META-INF/libs/mac/libs64/libVisionProxy.dylib and b/Libs/src/main/resources/META-INF/libs/mac/libs64/libVisionProxy.dylib differ diff --git a/Libs/xbuild.xml b/Libs/xbuild.xml index f9e9c15..863a66e 100644 --- a/Libs/xbuild.xml +++ b/Libs/xbuild.xml @@ -2,18 +2,18 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> - <groupId>org.sikuli</groupId> - <artifactId>SikuliX</artifactId> - <version>1.1.0</version> - <relativePath>../</relativePath> - </parent> + <groupId>org.sikuli</groupId> + <artifactId>SikuliX-Project</artifactId> + <version>1.1.0</version> + <relativePath>../</relativePath> + </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.sikuli</groupId> <artifactId>SikuliX-Libs</artifactId> <version>1.1.0</version> - + <profiles> <profile> <id>Windows</id> @@ -35,7 +35,7 @@ <os> <family>unix</family> <arch>x86</arch> - </os> + </os> </activation> <properties> <buildfolder>build/linux</buildfolder> @@ -89,7 +89,7 @@ </properties> </profile> </profiles> - + <build> <defaultGoal>install</defaultGoal> <plugins> @@ -114,7 +114,7 @@ </configuration> </execution> </executions> - </plugin> + </plugin> <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> diff --git a/Natives/src/main/java/org/sikuli/natives/DebugCategories.java b/Natives/src/main/java/org/sikuli/natives/DebugCategories.java index 66cd350..4bbea51 100644 --- a/Natives/src/main/java/org/sikuli/natives/DebugCategories.java +++ b/Natives/src/main/java/org/sikuli/natives/DebugCategories.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/FindInput.java b/Natives/src/main/java/org/sikuli/natives/FindInput.java index 6f62269..2f04b74 100644 --- a/Natives/src/main/java/org/sikuli/natives/FindInput.java +++ b/Natives/src/main/java/org/sikuli/natives/FindInput.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/FindResult.java b/Natives/src/main/java/org/sikuli/natives/FindResult.java index a713cf0..3f60ac3 100644 --- a/Natives/src/main/java/org/sikuli/natives/FindResult.java +++ b/Natives/src/main/java/org/sikuli/natives/FindResult.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/FindResults.java b/Natives/src/main/java/org/sikuli/natives/FindResults.java index d1e62dc..fbf7d72 100644 --- a/Natives/src/main/java/org/sikuli/natives/FindResults.java +++ b/Natives/src/main/java/org/sikuli/natives/FindResults.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/Mat.java b/Natives/src/main/java/org/sikuli/natives/Mat.java index 4e572c2..2de0271 100644 --- a/Natives/src/main/java/org/sikuli/natives/Mat.java +++ b/Natives/src/main/java/org/sikuli/natives/Mat.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCR.java b/Natives/src/main/java/org/sikuli/natives/OCR.java index 7eab2a4..8cf5cba 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCR.java +++ b/Natives/src/main/java/org/sikuli/natives/OCR.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRChar.java b/Natives/src/main/java/org/sikuli/natives/OCRChar.java index dcb90db..13c66bc 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRChar.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRChar.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRChars.java b/Natives/src/main/java/org/sikuli/natives/OCRChars.java index f2e3d63..d65748c 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRChars.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRChars.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRLine.java b/Natives/src/main/java/org/sikuli/natives/OCRLine.java index 108488d..620ea8b 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRLine.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRLine.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRLines.java b/Natives/src/main/java/org/sikuli/natives/OCRLines.java index 1e22ecb..155c503 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRLines.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRLines.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRParagraph.java b/Natives/src/main/java/org/sikuli/natives/OCRParagraph.java index 30156b8..f6d1521 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRParagraph.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRParagraph.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRParagraphs.java b/Natives/src/main/java/org/sikuli/natives/OCRParagraphs.java index 2cbcdd5..841d39b 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRParagraphs.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRParagraphs.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRRect.java b/Natives/src/main/java/org/sikuli/natives/OCRRect.java index 5bd7082..6b084e7 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRRect.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRRect.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRText.java b/Natives/src/main/java/org/sikuli/natives/OCRText.java index fa2ab49..64bb797 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRText.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRText.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRWord.java b/Natives/src/main/java/org/sikuli/natives/OCRWord.java index 8202dba..0a2f6f4 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRWord.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRWord.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/OCRWords.java b/Natives/src/main/java/org/sikuli/natives/OCRWords.java index 0354d8a..20f80e0 100644 --- a/Natives/src/main/java/org/sikuli/natives/OCRWords.java +++ b/Natives/src/main/java/org/sikuli/natives/OCRWords.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/TARGET_TYPE.java b/Natives/src/main/java/org/sikuli/natives/TARGET_TYPE.java index 58450c1..209e8d6 100644 --- a/Natives/src/main/java/org/sikuli/natives/TARGET_TYPE.java +++ b/Natives/src/main/java/org/sikuli/natives/TARGET_TYPE.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/Vision.java b/Natives/src/main/java/org/sikuli/natives/Vision.java index 055cc81..3ef624a 100644 --- a/Natives/src/main/java/org/sikuli/natives/Vision.java +++ b/Natives/src/main/java/org/sikuli/natives/Vision.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -75,6 +75,14 @@ public class Vision { return VisionProxyJNI.Vision_getParameter(param); } + public static void setSParameter(String param, String val) { + VisionProxyJNI.Vision_setSParameter(param, val); + } + + public static String getSParameter(String param) { + return VisionProxyJNI.Vision_getSParameter(param); + } + public Vision() { this(VisionProxyJNI.new_Vision(), true); } diff --git a/Natives/src/main/java/org/sikuli/natives/VisionProxy.java b/Natives/src/main/java/org/sikuli/natives/VisionProxy.java index e797a19..b7bb568 100644 --- a/Natives/src/main/java/org/sikuli/natives/VisionProxy.java +++ b/Natives/src/main/java/org/sikuli/natives/VisionProxy.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/Natives/src/main/java/org/sikuli/natives/VisionProxyJNI.java b/Natives/src/main/java/org/sikuli/natives/VisionProxyJNI.java index 1130de2..457dab0 100644 --- a/Natives/src/main/java/org/sikuli/natives/VisionProxyJNI.java +++ b/Natives/src/main/java/org/sikuli/natives/VisionProxyJNI.java @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 + * Version 2.0.12 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -144,6 +144,8 @@ public class VisionProxyJNI { public final static native long Vision_createMat(int jarg1, int jarg2, byte[] jarg3); public final static native void Vision_setParameter(String jarg1, float jarg2); public final static native float Vision_getParameter(String jarg1); + public final static native void Vision_setSParameter(String jarg1, String jarg2); + public final static native String Vision_getSParameter(String jarg1); public final static native long new_Vision(); public final static native void delete_Vision(long jarg1); public final static native void setDebug(int jarg1, int jarg2); diff --git a/Natives/src/main/native/Vision/vision.cpp b/Natives/src/main/native/Vision/vision.cpp index 5ae3450..62332a6 100755 --- a/Natives/src/main/native/Vision/vision.cpp +++ b/Natives/src/main/native/Vision/vision.cpp @@ -9,12 +9,13 @@ #include "finder.h" #include "tessocr.h" //#include "imgdb.h" not used currently -#include <sys/stat.h> +#include <sys/stat.h> using namespace sikuli; std::map<std::string, float> Vision::_params; +std::map<std::string, std::string> Vision::_sparams; bool fileExists(const char* strFilename){ struct stat stFileInfo; @@ -66,7 +67,7 @@ FindInput::FindInput(Mat source_, const FindInput other){ limit = other.limit; } -void +void FindInput::init(){ target_type = TARGET_TYPE_IMAGE; target_text = ""; @@ -81,11 +82,11 @@ void FindInput::setSource(const char* source_filename){ } void FindInput::setTarget(int target_type_, const char* target_string){ - target_type = target_type_; - if (target_type == TARGET_TYPE_TEXT + target_type = target_type_; + if (target_type == TARGET_TYPE_TEXT || target_type == TARGET_TYPE_BUTTON){ target_text = target_string; - } else if (target_type == TARGET_TYPE_IMAGE){ + } else if (target_type == TARGET_TYPE_IMAGE){ if(fileExists(target_string)) target = cv::imread(target_string,1); } @@ -100,53 +101,53 @@ void FindInput::setTarget(Mat target_){ target = target_; } -Mat +Mat FindInput::getSourceMat(){ return source; } -Mat +Mat FindInput::getTargetMat(){ return target; } -int +int FindInput::getTargetType(){ return target_type; } -void +void FindInput::setFindAll(bool all){ bFindingAll = all; } -bool +bool FindInput::isFindingAll(){ return bFindingAll; } -void +void FindInput::setLimit(int limit_){ limit = limit_; } -int +int FindInput::getLimit(){ return limit; } -void +void FindInput::setSimilarity(double similarity_){ similarity = similarity_; } -double +double FindInput::getSimilarity(){ return similarity; } -std::string +std::string FindInput::getTargetText(){ return target_text; } @@ -154,23 +155,24 @@ FindInput::getTargetText(){ void Vision::initOCR(const char* ocrDataPath) { + OCR::setParameter("lang", getSParameter("OCRLang")); OCR::init(ocrDataPath); } //#include "cvgui.h" not used currently #include "tessocr.h" -static vector<FindResult> +static vector<FindResult> find_text(FindInput& input){ - + vector<FindResult> results; - + Mat source = input.getSourceMat(); - if(!source.rows || !source.cols) + if(!source.rows || !source.cols) return results; - + TextFinder f(source); if (input.isFindingAll()){ - + int maxReturn = Vision::getParameter("FindAllMaxReturn"); f.find_all(input.getTargetText().c_str(), input.getSimilarity()); while (f.hasNext() && results.size() < maxReturn){ @@ -182,30 +184,30 @@ find_text(FindInput& input){ if (f.hasNext()) results.push_back(f.next()); } - - -/* + + +/* Mat result_image = source * 0.5; for (vector<FindResult>::iterator it = results.begin(); it != results.end(); ++it){ - + FindResult& r = *it; - + Point pt(r.x,r.y); - putText(result_image, input.getTargetText(), pt, + putText(result_image, input.getTargetText(), pt, FONT_HERSHEY_SIMPLEX, 0.3, Color::RED); - + } VisualLogger::setEnabled(enable_visual_log); sualLogger::log("FindText-Result", result_image); */ - + return results; } -static vector<FindResult> -find_image(FindInput& input){ +static vector<FindResult> +find_image(FindInput& input){ vector<FindResult> results; Mat source = input.getSourceMat(); Mat image = input.getTargetMat(); @@ -228,78 +230,78 @@ find_image(FindInput& input){ } /* not used currently -static vector<FindResult> +static vector<FindResult> find_button(FindInput& input){ - + vector<FindResult> results; - + Mat screen = input.getSourceMat(); - + vector<Blob> blobs; cvgui::findBoxes(screen, blobs); - - + + VisualLogger::setEnabled(false); - + for (vector<Blob>::iterator it = blobs.begin(); it != blobs.end(); ++it){ Blob& blob = *it; - - + + if (blob.width < 10) continue; - + Util::growRect(blob, -3, 0, screen); - + Mat blob_image(screen, blob); - - FindResult result(blob.x,blob.y,blob.width,blob.height,1); + + FindResult result(blob.x,blob.y,blob.width,blob.height,1); result.text = Vision::recognize(blob_image); - + if (result.text.empty()) continue; - - + + string target_text = input.getTargetText(); if (!target_text.empty()){ - + int d; d = OCR::findEditDistance(target_text.c_str(), result.text.c_str(), 3); - + if (d < 2){ - results.push_back(result); + results.push_back(result); } }else{ results.push_back(result); } - + // if we only need to find one result, and we already have one result if (!input.isFindingAll() && !results.empty()){ break; } - + } - - + + Mat result_image = screen * 0.5; for (vector<FindResult>::iterator it = results.begin(); it != results.end(); ++it){ - + FindResult& r = *it; - + Point pt(r.x,r.y); - putText(result_image, r.text, pt, + putText(result_image, r.text, pt, FONT_HERSHEY_SIMPLEX, 0.3, Color::RED); - - - + + + } - + VisualLogger::setEnabled(enable_visual_log); VisualLogger::log("Buttons-OCR", result_image); - + return results; } */ @@ -309,37 +311,37 @@ find_button(FindInput& input){ double Vision::compare(Mat im1, Mat im2){ - + Mat gray1; Mat gray2; - + // convert image from RGB to grayscale cvtColor(im1, gray1, CV_RGB2GRAY); cvtColor(im2, gray2, CV_RGB2GRAY); - + Mat diff1; absdiff(gray1,gray2,diff1); - + typedef uchar T; Size size = diff1.size(); - + int diff_cnt = 0; for( int i = 0; i < size.height; i++ ) { const T* ptr1 = diff1.ptr<T>(i); for( int j = 0; j < size.width; j += 4 ) - { + { if (ptr1[j] > PIXEL_DIFF_THRESHOLD) diff_cnt++; } } - + // ratio of pixels that are different double score = 1.0 * diff_cnt / (im1.rows * im1.cols); return score; } -vector<FindResult> +vector<FindResult> Vision::find(FindInput input){ vector<FindResult> results; if (input.getTargetType() == TARGET_TYPE_IMAGE || @@ -359,7 +361,7 @@ Vision::find(FindInput input){ return final_results; } -vector<FindResult> +vector<FindResult> Vision::findChanges(FindInput input){ vector<FindResult> results; Mat source = input.getSourceMat(); @@ -368,7 +370,7 @@ Vision::findChanges(FindInput input){ f.find(image); while (f.hasNext() && (results.size() < input.getLimit())){ results.push_back(f.next()); - } + } vector<FindResult> final_results; int n = input.getLimit(); if(n < results.size()){ @@ -395,27 +397,27 @@ Vision::recognize(Mat image){ /* not used currently string Vision::query(const char* index_filename, cv::Mat image){ - - Database db; + + Database db; ifstream in(index_filename, ios::binary); db.read(in); in.close(); - - + + string ret = ""; - - vector<ImageRecord> results = db.find(image); - for (vector<ImageRecord>::iterator r = results.begin(); + + vector<ImageRecord> results = db.find(image); + for (vector<ImageRecord>::iterator r = results.begin(); r != results.end(); ++r){ - + ImageRecord& record = *r; - + //cout << "ui" << record.id << " "; char buf[50]; sprintf(buf,"ui%d",record.id); ret = ret + string(buf) + " "; } - + return ret; } */ @@ -434,29 +436,29 @@ Vision::findTextBlobs(const cv::Mat& image){ vector<FindResult> Vision::findBlobs(const cv::Mat& image, bool textOnly){ - + vector<FindResult> results; vector<Blob> out_text_blobs; vector<Blob> out_img_blobs; - + cvgui::segmentScreenshot(image, out_text_blobs, out_img_blobs); - - + + for (vector<Blob>::iterator i = out_text_blobs.begin(); i != out_text_blobs.end(); ++i){ - + Blob& b = *i; FindResult fr(b.x,b.y,b.width,b.height,1); results.push_back(fr); } - + if(!textOnly){ - for (vector<Blob>::iterator i = out_img_blobs.begin(); + for (vector<Blob>::iterator i = out_img_blobs.begin(); i != out_img_blobs.end(); ++i){ Blob& b = *i; - FindResult fr(b.x,b.y,b.width,b.height,1); - results.push_back(fr); + FindResult fr(b.x,b.y,b.width,b.height,1); + results.push_back(fr); } } @@ -482,7 +484,6 @@ void Vision::setParameter(string param, float val){ void Vision::initParameters(){ _params["MinTargetSize"] = DEFAULT_PYRAMID_MIM_TARGET_DIMENSION; _params["FindAllMaxReturn"] = DEFAULT_FIND_ALL_MAX_RETURN; - } float Vision::getParameter(string param){ @@ -490,3 +491,20 @@ float Vision::getParameter(string param){ Vision::initParameters(); return _params[param]; } + +void Vision::setSParameter(string param, string val){ + if(_sparams.empty()) + Vision::initSParameters(); + _sparams[param] = val; +} + +void Vision::initSParameters(){ + _sparams["OCRLang"] = "eng"; + _sparams["OCRDataPath"] = "tessdata"; +} + +string Vision::getSParameter(string param){ + if(_sparams.empty()) + Vision::initSParameters(); + return _sparams[param]; +} diff --git a/Natives/src/main/native/Vision/vision.h b/Natives/src/main/native/Vision/vision.h index f4d93a8..6cb8fd5 100755 --- a/Natives/src/main/native/Vision/vision.h +++ b/Natives/src/main/native/Vision/vision.h @@ -11,32 +11,32 @@ #include "find-result.h" #include "opencv.hpp" #include "tessocr.h" -//#include "cvgui.h" not used +//#include "cvgui.h" not used using namespace cv; namespace sikuli { - + enum TARGET_TYPE{ TARGET_TYPE_MAT, TARGET_TYPE_IMAGE, TARGET_TYPE_TEXT, TARGET_TYPE_BUTTON }; - + class FindInput{ - + public: - + FindInput(); FindInput(Mat source, Mat target); FindInput(Mat source, int target_type, const char* target); - + FindInput(const char* source_filename, int target_type, const char* target); - + FindInput(Mat source, int target_type); FindInput(const char* source_filename, int target_type); - + // copy everything in 'other' except for the source image FindInput(Mat source, const FindInput other); @@ -45,66 +45,68 @@ public: void setSource(Mat source); void setTarget(Mat target); - + Mat getSourceMat(); Mat getTargetMat(); - + void setFindAll(bool all); bool isFindingAll(); void setLimit(int limit); int getLimit(); - + void setSimilarity(double similarity); double getSimilarity(); - + int getTargetType(); - + std::string getTargetText(); - + private: - + void init(); - + Mat source; Mat target; std::string target_text; - + int limit; double similarity; int target_type; - + int ordering; int position; - + bool bFindingAll; }; class Vision{ static std::map<std::string, float> _params; - static void initParameters(); + static std::map<std::string, std::string> _sparams; + static void initParameters(); + static void initSParameters(); public: - + static std::vector<FindResult> find(FindInput q); static std::vector<FindResult> findChanges(FindInput q); - + static double compare(cv::Mat m1, cv::Mat m2); - + static void initOCR(const char* ocrDataPath); - - + + // not used currently static string query(const char* index_filename, cv::Mat image); - + static OCRText recognize_as_ocrtext(cv::Mat image); - + // not used currently static std::vector<FindResult> findBlobs(const cv::Mat& image, bool textOnly=false); // not used currently static std::vector<FindResult> findTextBlobs(const cv::Mat& image); - + static std::string recognize(cv::Mat image); static std::string recognizeWord(cv::Mat image); @@ -113,9 +115,11 @@ public: static void setParameter(std::string param, float val); static float getParameter(std::string param); + static void setSParameter(std::string param, std::string val); + static std::string getSParameter(std::string param); + +private: -private: - }; } diff --git a/Natives/src/main/native/Vision/vision.swig b/Natives/src/main/native/Vision/vision.swig index bfaef5a..dc75b5e 100755 --- a/Natives/src/main/native/Vision/vision.swig +++ b/Natives/src/main/native/Vision/vision.swig @@ -4,7 +4,7 @@ #include "sikuli-debug.h" #include <iostream> #include "opencv.hpp" -//#include "cvgui.h" not used +//#include "cvgui.h" not used #include "tessocr.h" %} @@ -219,6 +219,8 @@ namespace sikuli { static void setParameter(std::string param, float val); static float getParameter(std::string param); + static void setSParameter(std::string param, std::string val); + static std::string getSParameter(std::string param); private: diff --git a/Natives/src/main/native/Vision/visionJAVA_wrap.cxx b/Natives/src/main/native/Vision/visionJAVA_wrap.cxx index a289a5e..4867239 100755 --- a/Natives/src/main/native/Vision/visionJAVA_wrap.cxx +++ b/Natives/src/main/native/Vision/visionJAVA_wrap.cxx @@ -1,11 +1,11 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.7 - * - * This file is not intended to be easily readable and contains a number of + * Version 2.0.12 + * + * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make - * changes to this file unless you know what you are doing--modify the SWIG - * interface file instead. + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. * ----------------------------------------------------------------------------- */ #define SWIGJAVA @@ -65,28 +65,28 @@ template <typename T> T SwigValueInit() { #ifndef SWIGUNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define SWIGUNUSED __attribute__ ((__unused__)) +# define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif # elif defined(__ICC) -# define SWIGUNUSED __attribute__ ((__unused__)) +# define SWIGUNUSED __attribute__ ((__unused__)) # else -# define SWIGUNUSED +# define SWIGUNUSED # endif #endif #ifndef SWIG_MSC_UNSUPPRESS_4505 # if defined(_MSC_VER) # pragma warning(disable : 4505) /* unreferenced local function has been removed */ -# endif +# endif #endif #ifndef SWIGUNUSEDPARM # ifdef __cplusplus # define SWIGUNUSEDPARM(p) # else -# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# define SWIGUNUSEDPARM(p) p SWIGUNUSED # endif #endif @@ -129,7 +129,7 @@ template <typename T> T SwigValueInit() { # define SWIGSTDCALL __stdcall # else # define SWIGSTDCALL -# endif +# endif #endif /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ @@ -215,7 +215,7 @@ static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionC #include "sikuli-debug.h" #include <iostream> #include "opencv.hpp" -//#include "cvgui.h" not used +//#include "cvgui.h" not used #include "tessocr.h" @@ -2484,6 +2484,53 @@ SWIGEXPORT jfloat JNICALL Java_org_sikuli_natives_VisionProxyJNI_Vision_1getPara } +SWIGEXPORT void JNICALL Java_org_sikuli_natives_VisionProxyJNI_Vision_1setSParameter(JNIEnv *jenv, jclass jcls, jstring jarg1, jstring jarg2) { + std::string arg1 ; + std::string arg2 ; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return ; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + if(!jarg2) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return ; + } + const char *arg2_pstr = (const char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2_pstr) return ; + (&arg2)->assign(arg2_pstr); + jenv->ReleaseStringUTFChars(jarg2, arg2_pstr); + sikuli::Vision::setSParameter(arg1,arg2); +} + + +SWIGEXPORT jstring JNICALL Java_org_sikuli_natives_VisionProxyJNI_Vision_1getSParameter(JNIEnv *jenv, jclass jcls, jstring jarg1) { + jstring jresult = 0 ; + std::string arg1 ; + std::string result; + + (void)jenv; + (void)jcls; + if(!jarg1) { + SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null string"); + return 0; + } + const char *arg1_pstr = (const char *)jenv->GetStringUTFChars(jarg1, 0); + if (!arg1_pstr) return 0; + (&arg1)->assign(arg1_pstr); + jenv->ReleaseStringUTFChars(jarg1, arg1_pstr); + result = sikuli::Vision::getSParameter(arg1); + jresult = jenv->NewStringUTF((&result)->c_str()); + return jresult; +} + + SWIGEXPORT jlong JNICALL Java_org_sikuli_natives_VisionProxyJNI_new_1Vision(JNIEnv *jenv, jclass jcls) { jlong jresult = 0 ; sikuli::Vision *result = 0 ; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/sikuli.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

