org.bytedeco.javacv.CanvasFrame Java Examples

The following examples show how to use org.bytedeco.javacv.CanvasFrame. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ShowImageRunner.java    From konduit-serving with Apache License 2.0 5 votes vote down vote up
protected CanvasFrame newFrame(String name){
    CanvasFrame cf = new CanvasFrame(name);
    int w = (step.width() == null || step.width() == 0) ? MIN_WIDTH : step.width();
    int h = (step.height() == null || step.height() == 0) ? MIN_HEIGHT : step.height();
    cf.setCanvasSize(w, h);
    return cf;
}
 
Example #2
Source File: ColoredObjectTracker.java    From ExoVisix with MIT License 5 votes vote down vote up
public void init() {
	// canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

	canvas = new CanvasFrame("Web Cam Live");
	path = new CanvasFrame("Detection");
	//path.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
	path.setContentPane(jp);
}
 
Example #3
Source File: VirtualBall.java    From procamtracker with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {
        CanvasFrame frame = new CanvasFrame("Virtual Ball Test");
        OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
        IplImage image = IplImage.create(640, 960, IPL_DEPTH_8U, 3);
        cvSetZero(image);
        double[] roiPts = { 0,0, 640,0, 640,480, 0,400 };
        cvFillConvexPoly(image, new CvPoint(4).put((byte)16, roiPts), roiPts.length/2, CvScalar.WHITE, CV_AA, 16);
        VirtualBall virtualBall = new VirtualBall(new Settings(roiPts));

        for (int i = 0; i < 1000; i++) {
            Thread.sleep(100);
            cvSetZero(image);
            if (i == 50) {
                roiPts[5] -= 100;
            }
            if (i > 100 && i < 1200) {
                roiPts[3] += 1;
                roiPts[5] += 1;
            }
//if (i > 103) {
//    System.out.println(i);
//}
            cvFillConvexPoly(image, new CvPoint(4).put((byte)16, roiPts), roiPts.length/2, CvScalar.WHITE, CV_AA, 16);
            virtualBall.draw(image, roiPts);
            frame.showImage(converter.convert(image));
        }
    }
 
Example #4
Source File: Chronometer.java    From procamtracker with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {
    CanvasFrame frame = new CanvasFrame("Chronometer Test");
    OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
    IplImage image = IplImage.create(640, 480, IPL_DEPTH_8U, 3);
    cvSetZero(image);
    Chronometer chronometer = new Chronometer(new Rectangle(100, 100, 100, 100), image);

    for (int i = 0; i < 1000; i++) {
        Thread.sleep(100);
        cvSetZero(image);
        chronometer.draw(image);
        frame.showImage(converter.convert(image));
    }
}
 
Example #5
Source File: LivePlayTest2.java    From oim-fx with MIT License 4 votes vote down vote up
/**
 * 转流器
 * 
 * @param inputFile
 * @param outputFile
 * @throws Exception
 * @throws org.bytedeco.javacv.FrameRecorder.Exception
 * @throws InterruptedException
 */
public static void recordPush(String inputFile, int v_rs) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception, InterruptedException {
	Loader.load(opencv_objdetect.class);
	long startTime = 0;
	FrameGrabber grabber = FFmpegFrameGrabber.createDefault(inputFile);
	try {
		grabber.start();
	} catch (Exception e) {
		try {
			grabber.restart();
		} catch (Exception e1) {
			throw e;
		}
	}

	OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
	Frame grabframe = grabber.grab();
	IplImage grabbedImage = null;
	if (grabframe != null) {
		System.out.println("取到第一帧");
		grabbedImage = converter.convert(grabframe);
	} else {
		System.out.println("没有取到第一帧");
	}

	System.out.println("开始推流");
	CanvasFrame frame = new CanvasFrame("camera", CanvasFrame.getDefaultGamma() / grabber.getGamma());
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setAlwaysOnTop(true);
	while (frame.isVisible() && (grabframe = grabber.grab()) != null) {
		System.out.println("推流...");
		frame.showImage(grabframe);
		grabbedImage = converter.convert(grabframe);
		Frame rotatedFrame = converter.convert(grabbedImage);

		if (startTime == 0) {
			startTime = System.currentTimeMillis();
		}

		Thread.sleep(40);
	}
	frame.dispose();

	grabber.stop();
	System.exit(2);
}
 
Example #6
Source File: RobotUtils.java    From karate with MIT License 4 votes vote down vote up
public static void show(Mat mat, String title) {
    OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
    CanvasFrame canvas = new CanvasFrame(title, 1);
    canvas.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    canvas.showImage(converter.convert(mat));
}
 
Example #7
Source File: RobotUtils.java    From karate with MIT License 4 votes vote down vote up
public static void show(Image image, String title) {
    CanvasFrame canvas = new CanvasFrame(title, 1);
    canvas.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    canvas.showImage(image);
}
 
Example #8
Source File: ShowImageTransform.java    From DataVec with Apache License 2.0 4 votes vote down vote up
/** Calls {@code this(canvas, -1)}. */
public ShowImageTransform(CanvasFrame canvas) {
    this(canvas, -1);
}
 
Example #9
Source File: ObjectFinder.java    From PapARt with GNU Lesser General Public License v3.0 4 votes vote down vote up
public static void main(String[] args) throws Exception {
//        Logger.getLogger("org.bytedeco.javacv").setLevel(Level.OFF);

//        String objectFilename = args.length == 2 ? args[0] : "/home/jiii/sketchbook/libraries/PapARt/data/markers/dlink.png";
        String objectFilename = args.length == 2 ? args[0] : "/home/jiii/repos/Papart-github/papart-examples/Camera/ExtractPlanarObjectForTracking/ExtractedView.bmp";
        String sceneFilename = args.length == 2 ? args[1] : "/home/jiii/my_photo-7.jpg";

        IplImage object = cvLoadImage(objectFilename, CV_LOAD_IMAGE_GRAYSCALE);
        IplImage image = cvLoadImage(sceneFilename, CV_LOAD_IMAGE_GRAYSCALE);
        if (object == null || image == null) {
            System.err.println("Can not load " + objectFilename + " and/or " + sceneFilename);
            System.exit(-1);
        }

        IplImage objectColor = IplImage.create(object.width(), object.height(), 8, 3);
        cvCvtColor(object, objectColor, CV_GRAY2BGR);

        IplImage correspond = IplImage.create(image.width(), object.height() + image.height(), 8, 1);
        cvSetImageROI(correspond, cvRect(0, 0, object.width(), object.height()));
        cvCopy(object, correspond);
        cvSetImageROI(correspond, cvRect(0, object.height(), correspond.width(), correspond.height()));
        cvCopy(image, correspond);
        cvResetImageROI(correspond);

        ObjectFinder.Settings settings = new ObjectFinder.Settings();
        settings.objectImage = object;
        settings.useFLANN = true;
        settings.ransacReprojThreshold = 5;
        ObjectFinder finder = new ObjectFinder(settings);

        long start = System.currentTimeMillis();
        double[] dst_corners = finder.find(image);
//        System.out.println("Finding time = " + (System.currentTimeMillis() - start) + " ms");

        if (dst_corners != null) {
            for (int i = 0; i < 4; i++) {
                int j = (i + 1) % 4;
                int x1 = (int) Math.round(dst_corners[2 * i]);
                int y1 = (int) Math.round(dst_corners[2 * i + 1]);
                int x2 = (int) Math.round(dst_corners[2 * j]);
                int y2 = (int) Math.round(dst_corners[2 * j + 1]);
                line(cvarrToMat(correspond), new Point(x1, y1 + object.height()),
                        new Point(x2, y2 + object.height()),
                        Scalar.WHITE, 1, 8, 0);
            }
        }

        for (int i = 0; i < finder.ptpairs.size(); i += 2) {
            Point2f pt1 = finder.objectKeypoints.get(finder.ptpairs.get(i)).pt();
            Point2f pt2 = finder.imageKeypoints.get(finder.ptpairs.get(i + 1)).pt();
            line(cvarrToMat(correspond), new Point(Math.round(pt1.x()), Math.round(pt1.y())),
                    new Point(Math.round(pt2.x()), Math.round(pt2.y() + object.height())),
                    Scalar.WHITE, 1, 8, 0);
        }

        CanvasFrame objectFrame = new CanvasFrame("Object");
        CanvasFrame correspondFrame = new CanvasFrame("Object Correspond");
        OpenCVFrameConverter converter = new OpenCVFrameConverter.ToIplImage();

        correspondFrame.showImage(converter.convert(correspond));
        for (int i = 0; i < finder.objectKeypoints.size(); i++) {
            KeyPoint r = finder.objectKeypoints.get(i);
            Point center = new Point(Math.round(r.pt().x()), Math.round(r.pt().y()));
            int radius = Math.round(r.size() / 2);
            circle(cvarrToMat(objectColor), center, radius, Scalar.RED, 1, 8, 0);
        }
        objectFrame.showImage(converter.convert(objectColor));

        objectFrame.waitKey();

        objectFrame.dispose();
        correspondFrame.dispose();
    }
 
Example #10
Source File: CalibrationWorker.java    From procamcalib with GNU General Public License v2.0 4 votes vote down vote up
public void init() throws Exception {
    // create arrays and canvas frames on the Event Dispatcher Thread...
    CameraDevice.Settings[] cs = cameraSettings.toArray();
    if (cameraDevices == null) {
        cameraDevices = new CameraDevice[cs.length];
    } else {
        cameraDevices = Arrays.copyOf(cameraDevices, cs.length);
    }
    cameraCanvasFrames = new CanvasFrame[cs.length];
    frameGrabbers = new FrameGrabber[cs.length];
    cameraFrameConverters = new OpenCVFrameConverter.ToIplImage[cs.length];
    for (int i = 0; i < cs.length; i++) {
        if (cameraDevices[i] == null) {
            cameraDevices[i] = new CameraDevice(cs[i]);
        } else {
            cameraDevices[i].setSettings(cs[i]);
        }
        if (cameraSettings.getMonitorWindowsScale() > 0) {
            cameraCanvasFrames[i] = new CanvasFrame(cs[i].getName());
            cameraCanvasFrames[i].setCanvasScale(cameraSettings.getMonitorWindowsScale());
        }
    }

    ProjectorDevice.Settings[] ps = projectorSettings.toArray();
    if (projectorDevices == null) {
        projectorDevices = new ProjectorDevice[ps.length];
    } else {
        projectorDevices = Arrays.copyOf(projectorDevices, ps.length);
    }
    projectorCanvasFrames = new CanvasFrame[ps.length];
    projectorPlanes = new MarkedPlane[ps.length];
    projectorFrameConverters = new OpenCVFrameConverter.ToIplImage[ps.length];
    for (int i = 0; i < ps.length; i++) {
        if (projectorDevices[i] == null) {
            projectorDevices[i] = new ProjectorDevice(ps[i]);
        } else {
            projectorDevices[i].setSettings(ps[i]);
        }
        projectorCanvasFrames[i] = projectorDevices[i].createCanvasFrame();
        projectorCanvasFrames[i].showColor(Color.BLACK);
        projectorFrameConverters[i] = new OpenCVFrameConverter.ToIplImage();
        Dimension dim = projectorCanvasFrames[i].getSize();
        projectorPlanes[i] = new MarkedPlane(dim.width, dim.height, markers[1], true,
                cvScalarAll(((ProjectorDevice.CalibrationSettings)ps[0]).getBrightnessForeground()*255),
                cvScalarAll(((ProjectorDevice.CalibrationSettings)ps[0]).getBrightnessBackground()*255), 4);
    }
}
 
Example #11
Source File: RealityAugmentor.java    From procamtracker with GNU General Public License v2.0 4 votes vote down vote up
public double[] acquireRoi(CanvasFrame monitorWindow, double monitorWindowScale,
        IplImage cameraImage, int pyramidLevel) throws Exception {
    final int w = cameraImage.width();
    final int h = cameraImage.height();
    roiPts = null;
    markerError      = 0;
    markerErrorCount = 0;

    for (ObjectSettings os : settings.toArray()) {
        File f = os.textureImageFile;
        RoiAcquisitionMethod ram = os.roiAcquisitionMethod;
        if ((ram == RoiAcquisitionMethod.OBJECT_FINDER || ram == RoiAcquisitionMethod.MARKER_DETECTOR) &&
                (f == null || (textureImage = cvLoadImage(f.getAbsolutePath())) == null)) {
            throw new Exception("Error: Could not load the object image file \"" + f + "\" for " + ram + ".");
        }
        // in the grabbed camera images, acquire the region of interest
        switch (ram) {
            case MOUSE_CLICKS:    roiPts = acquireRoiFromMouseClicks(monitorWindow, monitorWindowScale); break;
            case OBJECT_FINDER:   roiPts = acquireRoiFromObjectFinder  (cameraImage); break;
            case MARKER_DETECTOR: roiPts = acquireRoiFromMarkerDetector(cameraImage); break;
            case WHOLE_FRAME:     roiPts = new double[] { 0.0, 0.0,  w, 0.0,  w, h,  0.0, h }; break;
            case HALF_FRAME:
                double dw = w*(2-JavaCV.SQRT2)/4;
                double dh = h*(2-JavaCV.SQRT2)/4;
                roiPts = new double[] { dw, dh,  w-dw, dh,  w-dw, h-dh,  dw, h-dh }; break;
            default: assert false;
        }

        if (roiPts != null) {
            if (pyramidLevel > 0) {
                for (int i = 0; i < roiPts.length; i++) {
                    roiPts[i] = roiPts[i]*(1<<pyramidLevel);
                }
            }
            objectSettings = os;
            virtualSettings = null;
            for (VirtualSettings vs : objectSettings.toArray()) {
                Rectangle r = vs.objectHotSpot;
                if (r == null || r.width <= 0 || r.height <= 0) {
                    setVirtualSettings(vs);
                    initVirtualSettings();
                }
            }
            break;
        }
    }

    return roiPts;
}
 
Example #12
Source File: ShowImageTransform.java    From deeplearning4j with Apache License 2.0 4 votes vote down vote up
/** Calls {@code this(canvas, -1)}. */
public ShowImageTransform(CanvasFrame canvas) {
    this(canvas, -1);
}
 
Example #13
Source File: ShowImageTransform.java    From DataVec with Apache License 2.0 2 votes vote down vote up
/**
 * Constructs an instance of the ImageTransform from a {@link CanvasFrame}.
 *
 * @param canvas to display images in
 * @param delay  max time to wait in milliseconds (0 == infinity, negative == no wait)
 */
public ShowImageTransform(CanvasFrame canvas, int delay) {
    super(null);
    this.canvas = canvas;
    this.delay = delay;
}
 
Example #14
Source File: ShowImageTransform.java    From deeplearning4j with Apache License 2.0 2 votes vote down vote up
/**
 * Constructs an instance of the ImageTransform from a {@link CanvasFrame}.
 *
 * @param canvas to display images in
 * @param delay  max time to wait in milliseconds (0 == infinity, negative == no wait)
 */
public ShowImageTransform(CanvasFrame canvas, int delay) {
    super(null);
    this.canvas = canvas;
    this.delay = delay;
}