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

标签 java format webcam javacv

我终于让 JavaCV 与我的网络摄像头一起工作,但我找不到更改捕获图像的输出格式的方法。

我的 HP 笔记本电脑中有一个 HP HD (720p) 固定网络摄像头。我获得的唯一分辨率是 640x480。我尝试使用 FrameGrabber 的所有可用子类。

我正在使用这个简单的代码:

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();
    }

}

我是否遗漏了什么,或者是否有其他方法使用 JavaCV 从网络摄像头捕获图像?

最佳答案

我找到了另一种从网络摄像头捕获的方法,并设置了一些属性,例如首选宽度和高度。

这段代码对我有用:

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);
    }

}

希望这可以帮助遇到同样问题的人。

关于java - 如何在 JavaCV 中更改网络摄像头格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018190/

相关文章:

file - 对于三位数的指数,Fortran在输出中删除 'E'

visual-c++ - OpenCV 2.2 网络摄像头不显示图像

c# - 如何在 .NET 中使用虚拟网络摄像头驱动程序进行传输

java - 在同一个类中执行同步和非同步方法

java - 如何使用 TableHeader 渲染器

java - 如何在Java中将这个日期格式 "Wednesday, 12 June 2019 14:23:39"解析为这个 "2019-03-05T11:56:13Z"?

javascript - 在jquery中转换日期格式

swing - Java CV 1.0 网络摄像头视频捕获 :Frame cannot be converted to IplImage

java - java中的字节数组

java - 如何用 || 分割字符串