public synchronized void setTarget( RectangleLength2D_I32 rect , boolean visible ) { if( quad != null ) UtilPolygons2D_F64.convert(rect, quad); mode = Mode.TRACKING; targetVisible = visible; repaint(); }
@Override public boolean initialize(T image, Quadrilateral_F64 location ) { UtilPolygons2D_F64.bounding(location, rect); tracker.initialize(image,(int)rect.p0.x,(int)rect.p0.y,(int)rect.p1.x,(int)rect.p1.y); return true; }
/** * Enlarges the quadrilateral to make it more sensitive to changes in orientation */ protected void enlarge( Quadrilateral_F64 corners, double scale ) { UtilPolygons2D_F64.center(corners, center); extend(center,corners.a,scale); extend(center,corners.b,scale); extend(center,corners.c,scale); extend(center,corners.d,scale); }
private void drawCornersInside( Graphics2D g2 , double scale, Polygon2D_F64 poly ) { Color colors[] = new Color[]{Color.RED,new Color(190, 0, 0),Color.GREEN,new Color(0, 190, 0)}; Point2D_F64 center = new Point2D_F64(); UtilPolygons2D_F64.vertexAverage(poly,center); for (int i = 0; i < poly.size(); i++) { Point2D_F64 p = poly.get(i); Color c = i < 4 ? colors[i] : Color.BLUE; double dx = p.x - center.x; double dy = p.y - center.y; double x = (center.x + dx*0.75)*scale; double y = (center.y + dy*0.75)*scale; VisualizeFeatures.drawPoint(g2, x, y, 3, c, false); } }
if( convex && !UtilPolygons2D_F64.isConvex(workPoly)) { if( verbose ) System.out.println("Rejected not convex"); continue;
for (int i = 0; i < detected.size; i++) { FoundFiducial f = detected.get(i); UtilPolygons2D_F64.center(f.distortedPixels,center); center.x *= scale; center.y *= scale;
@Override public void selectedMarkerInList(int index, boolean failure) { double width=0; final Point2D_F64 center = new Point2D_F64(); synchronized (detected) { QrCode qr; if( failure ) { if (index >= failures.size) return; qr = failures.get(index); } else { if (index >= detected.size) return; qr = detected.get(index); } UtilPolygons2D_F64.vertexAverage(qr.bounds,center); for (int i = 0; i < 4; i++) { width = Math.max(width,qr.bounds.getSideLength(i)); } } final double _width = width; BoofSwingUtil.invokeNowOrLater(() -> { double scale = 0.75*Math.min(gui.getWidth(),gui.getHeight())/_width; gui.setScaleAndCenter(scale,center.x,center.y); controlPanel.setZoom(scale); }); }
public synchronized void setTarget( RectangleLength2D_I32 rect , boolean visible ) { if( quad != null ) UtilPolygons2D_F64.convert(rect, quad); mode = Mode.TRACKING; targetVisible = visible; repaint(); }
@Override public boolean initialize(T image, Quadrilateral_F64 location) { UtilPolygons2D_F64.bounding(location, rect); int width = (int)(rect.p1.x - rect.p0.x); int height = (int)(rect.p1.y - rect.p0.y); tracker.initialize(image,(int)rect.p0.x,(int)rect.p0.y,width,height); return true; }
private void drawQuad( Canvas canvas , Quadrilateral_F64 quad , int extend, Paint color ) { UtilPolygons2D_F64.convert(quad, polygon); MiscUtil.renderPolygon(polygon, path, canvas, color); } }
@Override public boolean initialize( T image, Quadrilateral_F64 location) { UtilPolygons2D_F64.bounding(location, rect); target.x0 = (int)rect.p0.x; target.y0 = (int)rect.p0.y; target.width = (int)rect.getWidth()+1; target.height = (int)rect.getHeight()+1; likelihood.setImage(image); likelihood.createModel(target); tracker.initialize(image,target); return true; }
@Override public boolean process(T image, Quadrilateral_F64 location) { if( !tracker.process(image )) return false; RectangleLength2D_I32 rect = tracker.getLocation(); UtilPolygons2D_F64.convert(rect,location); return true; }