简体   繁体   English

如何在 JavaCV 中更改网络摄像头格式?

[英]How to change webcam format in JavaCV?

I finally got JavaCV working with my webcam but I can't find a way to change the output format of the image grabbed.我终于让 JavaCV 与我的网络摄像头一起工作,但我找不到更改所抓取图像的 output 格式的方法。

I have a HP HD (720p) fixed webcam in my HP notebook.我的 HP 笔记本电脑中有一个 HP HD (720p) 固定网络摄像头。 The only resolution I get is 640x480.我得到的唯一分辨率是 640x480。 I tried using all available subclasses of FrameGrabber.我尝试使用 FrameGrabber 的所有可用子类。

I am using this simple code:我正在使用这个简单的代码:

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;

public class Webcam {

    public static void main(String[] args) throws Exception {
        FrameGrabber grabber = FrameGrabber.createDefault(0);
        grabber.start();

        IplImage grabbedImage = grabber.grab();

        CanvasFrame frame = new CanvasFrame("Some Title", CanvasFrame.getDefaultGamma() / grabber.getGamma());

        while (frame.isVisible() && (grabbedImage = grabber.grab()) != null) {
            frame.showImage(grabbedImage);
        }

        frame.dispose();
        grabber.stop();
    }

}

Am I missing something or is there another way to capture image from a webcam using JavaCV?我是不是遗漏了什么或者是否有另一种方法可以使用 JavaCV 从网络摄像头捕获图像?

I found another way to capture from webcam and also set some properties like preferred width and height.我找到了另一种从网络摄像头捕获并设置一些属性(如首选宽度和高度)的方法。

This code works for me:此代码对我有用:

import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import com.googlecode.javacv.cpp.opencv_highgui;
import com.googlecode.javacv.cpp.opencv_highgui.CvCapture;

public class Webcam {

    public static void main(String[] args) throws Exception {
        CvCapture capture = opencv_highgui.cvCreateCameraCapture(0);

        opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_HEIGHT, 720);
        opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_WIDTH, 1280);

        IplImage grabbedImage = opencv_highgui.cvQueryFrame(capture);

        CanvasFrame frame = new CanvasFrame("Webcam");

        while (frame.isVisible() && (grabbedImage = opencv_highgui.cvQueryFrame(capture)) != null) {
            frame.showImage(grabbedImage);
        }

        frame.dispose();
        opencv_highgui.cvReleaseCapture(capture);
    }

}

Hope this helps somebody with same problem.希望这可以帮助有同样问题的人。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM