从网络摄像机中以Java捕获高分辨率图像快照

5
有没有人知道一个可以用于从网络摄像头中捕捉高分辨率图像快照的Java库?
更具体地说: - 检测可用的网络摄像头(笔记本电脑可能有内置的和通过USB连接附加的外部摄像头) - 选择要使用的摄像头。 - 检测可用的图像捕捉分辨率(例如:对于一个具有1.3 Mp传感器的网络摄像头,最高可达1280x1024)。 它们通常比视频捕获分辨率大得多(例如:对于相同的网络摄像头,最高为640x480)。 - 选择要使用的分辨率。 - 在请求时(调用API函数),使用所选的摄像头和所选的分辨率捕获快照。
我已经尝试过: - JMF:不好用,不支持自动检测连接的摄像头。 - FMJ:使用LTI-CIVIL支持网络摄像头。 - LTI-CIVIL:仅支持视频捕获。 代码也很老(如果我没记错的话是2007年)。 使用C++编写的本地库进行摄像头访问。 对于Windows使用DirectX,对于Linux使用Video4Linux。 但是通过查看C++代码,显然它是针对视频流而设计的,这不是我的目的(正如我所需要的描述所反映的那样)。
如果有人知道符合我需求的Java库,我将不胜感激。
谢谢。

你为什么不能使用本地的Windows框架? - Thorbjørn Ravn Andersen
本地Windows也不支持从网络摄像头中获取大于640 x 480分辨率的图像。 - Brent Faust
4个回答

2

openCV是一款流行的C ++计算机视觉库。然而,它们也有Java绑定。

http://code.google.com/p/javacv/

OpenCV让您可以访问图像和视频处理,并从多个网络摄像头捕捉图像和视频。


1

这个Java API应该可以完成工作:http://webcam-capture.sarxos.pl/ 以下代码拍摄照片并将其保存为项目工作区文件夹中的.png文件。请务必查看创建者网站上的其他示例。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.github.sarxos.webcam.Webcam;

public class TakePictureExample {

public static void main(String[] args) throws IOException {

    // get default webcam and open it
    Webcam webcam = Webcam.getDefault();
    webcam.open();

    // get image
    BufferedImage image = webcam.getImage();

    // save image to PNG file
    ImageIO.write(image, "PNG", new File("test.png"));
}
}

0

谢谢,但我想先尝试一下openCV(推荐如下)。 - Michael
@Michael,你能分享一下你的研究吗?你找到了什么好的Java库吗? - vaibhav

0
你可以使用JMyron,该库在这里,并且你可以通过这个示例看到它的工作原理。

1
好的,这个例子展示了如何捕获视频流(我已经可以用lti-civil做到了)。我会尝试使用OpenCV,如果它也失败了,我会尝试jMyron,谢谢提供信息。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接