private void createUI() { final JFrame frame = new JFrame("PDM Builder"); final JPanel panel = new JPanel(); frame.getContentPane().add(panel); ic = new DisplayUtilities.ImageComponent(true, false); ic.setAllowPanning(false); ic.setAllowZoom(false); ic.setImage(ImageUtilities.createBufferedImage(images.get(0))); ic.setPreferredSize(ic.getSize()); ic.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { registerClick(e.getX(), e.getY()); } }); panel.add(ic); final SpinnerModel model = new SpinnerNumberModel(0, 0, images.size(), 1); imageSpinner = new JSpinner(model); new JSpinner.NumberEditor(imageSpinner); imageSpinner.addChangeListener(this); panel.add(imageSpinner); labelsList = new JComboBox<String>(pointLabels); labelsList.addActionListener(this); panel.add(labelsList); frame.pack(); frame.setVisible(true); }
private void createUI() { final JFrame frame = new JFrame("PDM Builder"); final JPanel panel = new JPanel(); frame.getContentPane().add(panel); ic = new DisplayUtilities.ImageComponent(true, false); ic.setAllowPanning(false); ic.setAllowZoom(false); ic.setImage(ImageUtilities.createBufferedImage(images.get(0))); ic.setPreferredSize(ic.getSize()); ic.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { registerClick(e.getX(), e.getY()); } }); panel.add(ic); final SpinnerModel model = new SpinnerNumberModel(0, 0, images.size(), 1); imageSpinner = new JSpinner(model); new JSpinner.NumberEditor(imageSpinner); imageSpinner.addChangeListener(this); panel.add(imageSpinner); labelsList = new JComboBox<String>(pointLabels); labelsList.addActionListener(this); panel.add(labelsList); frame.pack(); frame.setVisible(true); }
/** * Default constructor * * @param window * The window to display the demo in * @throws IOException */ public VideoFeatureExtraction(final JComponent window) throws IOException { this.capture = new VideoCapture(640, 480); window.setLayout(new GridBagLayout()); final JPanel vidPanel = new JPanel(new GridBagLayout()); vidPanel.setBorder(BorderFactory.createTitledBorder("Live Video")); this.videoDisplay = VideoDisplay.createVideoDisplay(this.capture, vidPanel); this.videoDisplay.addVideoListener(this); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.PAGE_START; window.add(vidPanel, gbc); this.modelPanel = new JPanel(new GridBagLayout()); this.modelPanel.setBorder(BorderFactory.createTitledBorder("Feature type: " + this.mode.toString())); gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.PAGE_END; gbc.gridy = 1; window.add(this.modelPanel, gbc); this.modelFrame = new ImageComponent(true, false); this.modelPanel.add(this.modelFrame); this.histogramImage = new MBFImage(640, 60, ColourSpace.RGB); this.modelFrame.setImage(ImageUtilities.createBufferedImageForDisplay(this.histogramImage)); ((JFrame) SwingUtilities.getRoot(this.videoDisplay.getScreen())).addKeyListener(this); }
this.modelFrame.setImage(ImageUtilities.createBufferedImageForDisplay(this.modelImage));
this.ic.setImage(ImageUtilities.createBufferedImageForDisplay(outFrame));
c.setImage(img); c.setOriginalImage(originalImage); c.setSize(width, height);
c.setImage(img); c.setOriginalImage(originalImage); c.setSize(width, height);
@Override public synchronized void afterUpdate(final VideoDisplay<MBFImage> display) { if (this.matcher != null && !this.videoFrame.isPaused()) { final MBFImage capImg = this.currentFrame; final LocalFeatureList<Keypoint> kpl = this.engine.findFeatures(Transforms.calculateIntensityNTSC(capImg)); final MBFImageRenderer renderer = capImg.createRenderer(); renderer.drawPoints(kpl, RGBColour.MAGENTA, 3); MBFImage matches; if (this.matcher.findMatches(kpl) && ((MatrixTransformProvider) this.matcher.getModel()).getTransform().cond() < 1e6) { try { final Matrix boundsToPoly = ((MatrixTransformProvider) this.matcher.getModel()).getTransform() .inverse(); if (modelImage.getBounds().transform(boundsToPoly).isConvex()) { this.renderMode.render(renderer, boundsToPoly, this.modelImage.getBounds()); } } catch (final RuntimeException e) { } matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } else { matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } this.matchPanel.setPreferredSize(this.matchPanel.getSize()); this.matchFrame.setImage(ImageUtilities.createBufferedImageForDisplay(matches)); } }
/** * Default constructor * * @param window * The window to display the demo in * @throws IOException */ public VideoFeatureExtraction(final JComponent window) throws IOException { this.capture = new VideoCapture(640, 480); window.setLayout(new GridBagLayout()); final JPanel vidPanel = new JPanel(new GridBagLayout()); vidPanel.setBorder(BorderFactory.createTitledBorder("Live Video")); this.videoDisplay = VideoDisplay.createVideoDisplay(this.capture, vidPanel); this.videoDisplay.addVideoListener(this); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.PAGE_START; window.add(vidPanel, gbc); this.modelPanel = new JPanel(new GridBagLayout()); this.modelPanel.setBorder(BorderFactory.createTitledBorder("Feature type: " + this.mode.toString())); gbc = new GridBagConstraints(); gbc.anchor = GridBagConstraints.PAGE_END; gbc.gridy = 1; window.add(this.modelPanel, gbc); this.modelFrame = new ImageComponent(true, false); this.modelPanel.add(this.modelFrame); this.histogramImage = new MBFImage(640, 60, ColourSpace.RGB); this.modelFrame.setImage(ImageUtilities.createBufferedImageForDisplay(this.histogramImage)); ((JFrame) SwingUtilities.getRoot(this.videoDisplay.getScreen())).addKeyListener(this); }
@Override public synchronized void afterUpdate(final VideoDisplay<MBFImage> display) { if (this.matcher != null && !this.videoFrame.isPaused()) { final MBFImage capImg = this.currentFrame; final LocalFeatureList<Keypoint> kpl = this.engine.findFeatures(Transforms.calculateIntensityNTSC(capImg)); final MBFImageRenderer renderer = capImg.createRenderer(); renderer.drawPoints(kpl, RGBColour.MAGENTA, 3); MBFImage matches; if (this.matcher.findMatches(kpl) && ((MatrixTransformProvider) this.matcher.getModel()).getTransform().cond() < 1e6) { try { final Matrix boundsToPoly = ((MatrixTransformProvider) this.matcher.getModel()).getTransform() .inverse(); if (modelImage.getBounds().transform(boundsToPoly).isConvex()) { this.renderMode.render(renderer, boundsToPoly, this.modelImage.getBounds()); } } catch (final RuntimeException e) { } matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } else { matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } this.matchPanel.setPreferredSize(this.matchPanel.getSize()); this.matchFrame.setImage(ImageUtilities.createBufferedImageForDisplay(matches)); } }
@Override public synchronized void afterUpdate(final VideoDisplay<MBFImage> display) { if (this.matcher != null && !this.videoFrame.isPaused()) { final MBFImage capImg = this.videoFrame.getVideo().getCurrentFrame(); final LocalFeatureList<Keypoint> kpl = this.engine.findFeatures(capImg); final MBFImageRenderer renderer = capImg.createRenderer(); renderer.drawPoints(kpl, RGBColour.MAGENTA, 3); MBFImage matches; if (this.matcher.findMatches(kpl)) { try { // Shape sh = // modelImage.getBounds().transform(((MatrixTransformProvider) // matcher.getModel()).getTransform().inverse()); // renderer.drawShape(sh, 3, RGBColour.BLUE); final Matrix boundsToPoly = ((MatrixTransformProvider) this.matcher.getModel()).getTransform() .inverse(); this.renderMode.render(renderer, boundsToPoly, this.modelImage.getBounds()); } catch (final RuntimeException e) { } matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } else { matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } this.matchPanel.setPreferredSize(this.matchPanel.getSize()); this.matchFrame.setImage(ImageUtilities.createBufferedImageForDisplay(matches)); } }
@Override public synchronized void afterUpdate(final VideoDisplay<MBFImage> display) { if (this.matcher != null && !this.videoFrame.isPaused()) { final MBFImage capImg = this.videoFrame.getVideo().getCurrentFrame(); final LocalFeatureList<Keypoint> kpl = this.engine.findFeatures(capImg); final MBFImageRenderer renderer = capImg.createRenderer(); renderer.drawPoints(kpl, RGBColour.MAGENTA, 3); MBFImage matches; if (this.matcher.findMatches(kpl)) { try { // Shape sh = // modelImage.getBounds().transform(((MatrixTransformProvider) // matcher.getModel()).getTransform().inverse()); // renderer.drawShape(sh, 3, RGBColour.BLUE); final Matrix boundsToPoly = ((MatrixTransformProvider) this.matcher.getModel()).getTransform() .inverse(); this.renderMode.render(renderer, boundsToPoly, this.modelImage.getBounds()); } catch (final RuntimeException e) { } matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } else { matches = MatchingUtilities .drawMatches(this.modelImage, capImg, this.matcher.getMatches(), RGBColour.RED); } this.matchPanel.setPreferredSize(this.matchPanel.getSize()); this.matchFrame.setImage(ImageUtilities.createBufferedImageForDisplay(matches)); } }
/** * Update the image that is being displayed in the given named window. * * @param name * The named window * @param newImage * The new image to display * @param title * The window title */ public static void updateNamed(final String name, final Image<?, ?> newImage, final String title) { final JFrame w = DisplayUtilities.createNamedWindow(name, title, true); final BufferedImage bimg = DisplayUtilities.getImage(w); ((ImageComponent) w.getContentPane().getComponent(0)) .setImage(ImageUtilities.createBufferedImageForDisplay( newImage, bimg)); }
/** * Update the image that is being displayed in the given named window. * * @param name * The named window * @param newImage * The new image to display * @param title * The window title */ public static void updateNamed(final String name, final Image<?, ?> newImage, final String title) { final JFrame w = DisplayUtilities.createNamedWindow(name, title, true); final BufferedImage bimg = DisplayUtilities.getImage(w); ((ImageComponent) w.getContentPane().getComponent(0)) .setImage(ImageUtilities.createBufferedImageForDisplay( newImage, bimg)); }
/** * Construct with given image * * @param image * the image */ public ImageComponent(final BufferedImage image) { this(true, true); this.setImage(image); }
private void updateImage() { final int imageId = (int) imageSpinner.getModel().getValue(); final MBFImage img = images.get(imageId).toRGB(); for (final Pixel p : pointData[imageId]) { if (p != null) { img.drawPoint(p, RGBColour.RED, 9); } } ic.setImage(ImageUtilities.createBufferedImage(img)); }
/** * Construct with given image * * @param image * the image */ public ImageComponent(final BufferedImage image) { this(true, true); this.setImage(image); }
private void updateImage() { final int imageId = (int) imageSpinner.getModel().getValue(); final MBFImage img = images.get(imageId).toRGB(); for (final Pixel p : pointData[imageId]) { if (p != null) { img.drawPoint(p, RGBColour.RED, 9); } } ic.setImage(ImageUtilities.createBufferedImage(img)); }
@Override public synchronized void beforeUpdate(final MBFImage frame) { final DoubleFV histogram = this.mode.createFeature(frame); this.drawHistogramImage(histogram); this.modelFrame.setImage(ImageUtilities.createBufferedImageForDisplay(this.histogramImage)); }
@Override public synchronized void beforeUpdate(final MBFImage frame) { final DoubleFV histogram = this.mode.createFeature(frame); this.drawHistogramImage(histogram); this.modelFrame.setImage(ImageUtilities.createBufferedImageForDisplay(this.histogramImage)); }