private static Match waitx(String image, Pattern pimage, double timeout, float score) throws FindFailed { Object aPattern = null; if (image != null) { if (score > 0) { aPattern = new Pattern(image).similar(score); } else { aPattern = image; } } else if (pimage != null) { aPattern = pimage; } if (aPattern != null) { if (timeout > -1.0) { return scr.wait(aPattern, timeout); } return scr.wait(aPattern); } return null; }
public Tracker(Pattern pattern){ //this.guide = guide; //this.match = match; screen = new Screen(); BufferedImage image; BufferedImage center; this.pattern = pattern; // try { image = pattern.getBImage(); int w = image.getWidth(); int h = image.getHeight(); center = image.getSubimage(w/4,h/4,w/2,h/2); centerPattern = new Pattern(center); // } catch (Exception e) { // e.printStackTrace(); // } //TODO Pattern with BufferedImage centerPattern = new Pattern(pattern); }
/** * do a find op with the given pattern in the Finder's image * (hasNext() and next() will reveal possible match results) * @param aPtn Pattern * @return null. if find setup not possible */ public String find(Pattern aPtn) { if (!valid) { log(-1, "not valid"); return null; } if (aPtn.isValid()) { _pattern = aPtn; _findInput.setTarget(aPtn.getImage().getMatNative()); _findInput.setSimilarity(aPtn.getSimilar()); _results = Vision.find(_findInput); _cur_result_i = 0; return aPtn.getFilename(); } else { return null; } }
public boolean isAlreadyTracking(Pattern pattern, Region match) { try { boolean sameMatch = this.match == match; boolean sameBufferedImage = this.pattern.getBImage() == pattern.getBImage(); boolean sameFilename = (this.pattern.getFilename() != null && (this.pattern.getFilename().compareTo(pattern.getFilename()) == 0)); return sameMatch || sameBufferedImage || sameFilename; } catch (Exception e) { return false; } }
/** * create a new Image with Pattern aspects from an existing Pattern * @param p a Pattern * @return the new Image */ public static Image create(Pattern p) { Image img = p.getImage().copy(); img.setIsPattern(true); img.setSimilarity(p.getSimilar()); img.setOffset(p.getTargetOffset()); img.setWaitAfter(p.getTimeAfter()); return img; }
newObj = new Location(locFromJSON(json)); } else if ("P".equals(oType)) { newObj = new Pattern(json[1]); ((Pattern) newObj).similar(fltFromJSON(json, 2)); ((Pattern) newObj).targetOffset(intFromJSON(json, 3), intFromJSON(json, 4));
score = (float) (img.getLastSeenScore() - 0.01); if (ptn != null) { if (!(ptn.getSimilar() > score)) { shouldCheckLastSeen = true; f.find(new Pattern(img).similar(score)); } else { f.find(new Pattern(ptn).similar(score));
/** * Pattern from file. * * @param path - image file path * @param similarity - similarity fraction * @return Pattern created from image */ public static Pattern pattern(String path, float similarity) { return pattern(path).similar(similarity); }
if (((Pattern) pprobe).getImage().isValid()) { isValid = true; pImage = ((Pattern) pprobe).getImage(); similarity = ((Pattern) pprobe).getSimilar();
public void setTracker(Pattern pattern) { setOpacity(0f); tracker = new Tracker(pattern); BufferedImage img; try { img = pattern.getBImage(); setActualSize(img.getWidth(), img.getHeight()); tracker.setAnchor(this); } catch (Exception e) { e.printStackTrace(); } }
/** * create a new Pattern from another (attribs are copied) * * @param p other Pattern */ public Pattern(Pattern p) { image = p.getImage(); similarity = p.similarity; offset.x = p.offset.x; offset.y = p.offset.y; imagePattern = image.isPattern(); }
private <PSC> float getSimiliarity(PSC ptn) { float similarity = -1f; if (ptn instanceof Pattern) { similarity = ((Pattern) ptn).getSimilar(); } if (similarity < 0) { similarity = (float) Settings.MinSimilarity; } return similarity; }
@Override public String toString() { String ret = "P(" + image.getName() + (isValid() ? "" : " -- not valid!") + ")"; ret += " S: " + similarity; if (offset.x != 0 || offset.y != 0) { ret += " T: " + offset.x + "," + offset.y; } return ret; } }
/** * * @return the next match or null */ @Override public Match next() { Match match = null; if (hasNext()) { FindResult fr = _results.get(_cur_result_i++); IScreen parentScreen = null; if (screenFinder && _region != null) { parentScreen = _region.getScreen(); } match = new Match(fr, parentScreen); match.setOnScreen(screenFinder); fr.delete(); if (_region != null) { match = _region.toGlobalCoord(match); } if (_pattern != null) { Location offset = _pattern.getTargetOffset(); match.setTargetOffset(offset); } match.setImage(_image); } return match; } }
/** * Pattern from file. * * @param path - image file path * @param similarity - similarity fraction * @return Pattern created from image */ public static Pattern pattern(String path) { return new Pattern(new File(path).getAbsolutePath()); } }
public void addTracker(Pattern pattern, SxAnchor anchor) { Tracker tracker = null; // // find a tracker already assigned to this pattern // for (Tracker t : trackers){ // if (t.isAlreadyTracking(pattern,r)){ // tracker = t; // break; // } // } // if (tracker == null){ tracker = new Tracker(this, pattern, null); trackers.add(tracker); // } BufferedImage img; try { img = pattern.getBImage(); anchor.setActualSize(img.getWidth(), img.getHeight()); tracker.setAnchor(anchor); } catch (Exception e) { e.printStackTrace(); } }
protected static <PSI> Image getImageFromTarget(PSI target) { if (target instanceof Pattern) { return ((Pattern) target).getImage(); } else if (target instanceof String) { Image img = get((String) target, true); img = createImageValidate(img, true); return img; } else if (target instanceof Image) { return (Image) target; } else { runTime.abortScripting("aborting script at:", String.format("find, wait, exists: invalid parameter: %s", target)); } return null; }