我想从网络摄像头拍摄图像。我怎么能这样做?
如果您的建议库有任何示例代码,那么对我来说它比其他代码更好。
我检查过这些:
这些没用。这些不起作用或没有示例代码。 你有什么建议吗?
答案 0 :(得分:3)
试试这个项目:
http://github.com/rladstaetter/isight-java/
和相应的博文
http://ladstatt.blogspot.co.at/2013/04/using-isight-camera-with-javafx.html
请记住,您必须拥有适合您架构的正确opencv dll(x64)
答案 1 :(得分:1)
我剥离了OpenIMAJ核心视频捕获库以从网络摄像头获取图像。它适用于我的macbook,linux deskdop和windows 7环境。
您不需要安装任何东西,只需要两个罐子。你可以从我的网站上找到这个例子:
答案 2 :(得分:0)
以下是指向Demonstration JavaFX Camera capture application using LTI-CIVIL
的链接你说LTI-CIVIL库只有32位是正确的,所以可能没用。在你的情况下,64位是必要的。
答案 3 :(得分:0)
现在,我在Windows 7 X64机器上使用javacv。 它适用于win7 32,win7 64,linux X86& X64
1-你需要安装opencv或者只是将opencv dll文件复制到C:/(复制:opencv files)
2-将javacpp.jar,javacv.jar和javacv-windows-x86-64.jar添加到您的项目中。
3-将awt图像转换为javafx图像的方法
public static javafx.scene.image.Image convertToFxImage(java.awt.image.BufferedImage awtImage){
if (Image.impl_isExternalFormatSupported(BufferedImage.class)) { return javafx.scene.image.Image.impl_fromExternalImage(awtImage);
} else {return null;} }
4 - 将其添加到控制器类:
@FXML
私人ImageView camview;
IplImage img;
@覆盖
public void initialize(URL url,ResourceBundle rb){
任务任务=新任务(){
@覆盖
public Void call(){
FrameGrabber grabber = new OpenCVFrameGrabber(0); // 1 for next camera try { grabber.start(); while (true) { img = grabber.grab(); if (img != null) { cvSaveImage((i++) + "-pic.jpg", img); // save image camview.setImage(convertToFxImage(img.getBufferedImage())); //show image on ImageView } } } catch (Exception e) {} return null;}}; new Thread(task).start();}