gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:27:02 25 4
gpt4 key购买 nike

我终于让 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com