All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sikuli.api.FourCornerModel Maven / Gradle / Ivy

The newest version!
package org.sikuli.api;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.List;

import com.google.common.collect.Lists;

import edu.umd.cs.piccolo.PLayer;
import edu.umd.cs.piccolo.nodes.PPath;

class FourCornerModel extends VisualModel {
		
	static final double MIN_ASPECT_RATIO = 0.20f;
	
	static public FourCornerModel learnFrom(BufferedImage trainingImage){
		FourCornerModel model = new FourCornerModel();
		
//		VisualModelFinder.logger.step(trainingImage, "original model image");
		//BufferedImage trimmedModelImage = VisionUtils.getSubimageInsideMargin(trainingImage);
		//Rectangle inside = new R
//		Rectangle inside = VisionUtils.getRegionInsideMargin(trainingImage);
//		inside.grow(2,2);
//		inside.x = Math.max(0, inside.x);
//		inside.y = Math.max(0, inside.y);
//		inside.y = Math.min(in, inside.y);
//		inside.y = Math.min(0, inside.y);
		BufferedImage trimmedModelImage = trainingImage;
		//BufferedImage trimmedModelImage = trainingImage.getSubimage(inside.x,inside.y,inside.width,inside.height);
		
//		VisualModelFinder.logger.step(trimmedModelImage, "margin trimmed");

		final int d = 12;			
		int w = trimmedModelImage.getWidth();
		int h = trimmedModelImage.getHeight();			
		BufferedImage s = trimmedModelImage;			
		model.topLeft = new ModelPart(new Rectangle(0,0,d,d), s);
		model.topRight = new ModelPart(new Rectangle(w-d,0,d,d), s);
		model.bottomRight = new ModelPart(new Rectangle(w-d,h-d,d,d), s);
		model.bottomLeft = new ModelPart(new Rectangle(0,h-d,d,d), s);
					
		final List parts = Lists.newArrayList(model.topLeft,model.topRight,model.bottomRight,model.bottomLeft);
		
//		ImageRenderer ir = new PiccoloImageRenderer(trimmedModelImage){
//			@Override
//			protected void addContent(PLayer layer) {
//				for (ModelPart part : parts){					
//					PPath p = PPath.createRectangle(0,0,d,d);
//					p.setStrokePaint(Color.red);
//					p.setStroke(new BasicStroke(2f));
//					p.setOffset(part.getBounds().getLocation());
//					layer.addChild(p);
//				}
//			}			
//		};		
//		VisualModelFinder.logger.step(ir, "parts");
		
		return model;
	}
	
	public ModelPart getTopLeft() {
		return topLeft;
	}

	public ModelPart getBottomLeft() {
		return bottomLeft;
	}

	public ModelPart getTopRight() {
		return topRight;
	}

	public ModelPart getBottomRight() {
		return bottomRight;
	}

	private ModelPart topLeft;
	private ModelPart bottomLeft;
	private ModelPart topRight;
	private ModelPart bottomRight;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy